我有一个main.php和test.php。
- test.php应该由main.php执行
- 两个脚本都必须无限运行。
- main.php必须在一段时间内检查test.php是否正在运行,如果它没有运行(以防发生错误),请再次执行它。
- 我也必须有错误日志。
- 如果main.php收到
'test stop'
它发送'close'
到test.php并且test.php必须停止(我不知道执行后如何将我的订单(例如'test stop'
)发送到main.php?)
我有这个样本:
主.php:
<?php
function execute(){
$desc = array(
0 => array('pipe', 'r'),
1 => array('pipe', 'w'),
2 => array('file', 'log.txt', 'a')
);
$cmd = "start /b C:\wamp\bin\php\php5.4.3\php.exe test.php";
$p = proc_open($cmd, $desc, $pipes);
$res[0] = $p;
$res[1] = $pipes;
return $res;
}
$res = execute();
while(1) {
$status = proc_get_status($res[0]);
if (!$status['running']) {
$res = execute();
}
if ( trim(fgets(STDIN)) == 'stop test' ) {
fwrite($res[1][0], 'close');
fclose($res[1][0]);
fclose($res[1][1]);
fclose($res[1][2]);
proc_close($res[0]);
break;
}
}
?>
测试.php:
<?php
while (1) {
// ---------
// other commands
// ---------
// ---------
$status = trim(fgets(STDIN));
if ($status == 'close') exit();
}
?>
好的,这是我的代码的摘要,但它们不能正常工作。
例如,当脚本到达test.php$status = trim(fgets(STDIN));
中的这一行时,它会等到输入,如果我们不为它发送任何输入,脚本会停止并且不运行其余代码,但我希望脚本在循环中运行并执行命令,直到main.php将输入传递给他。
我在窗户上工作。