我试图延迟执行script2.php 10秒,但不是整个script1.php。当我在script2.php的顶部放置一个sleep(10)时,不幸的是,script1也被延迟,由底部的输出证明。
<?php
{
echo date("H:i:s");
exec("nohup php script2.php $id $host '$status' '$nagios_host' &> /dev/null &");
echo date("H:i:s");
echo("nohup script2.php $id $host '$status' '$nagios_host' &> /dev/null &");
echo date("H:i:s");
echo $id." - ".$host." - ".$status." - ".$nagios_host."\n";
}
?>
这是script1.php的输出:
11:09:35
nohup: redirecting stderr to stdout
11:09:45
nohup php script2.php 1341234 blabla.com 'blabla alert => CRITICAL' 'nagios01.blabla.com' &> /dev/null &
11:09:45
1341234 - blabla.com - blabla alert => CRITICAL - nagios01.blabla.com
答案 0 :(得分:0)
我没有看到输出有任何问题,你将执行延迟了10秒,你得到了结果。不要期望script2.php比第一个脚本执行得晚,因为PHP会在继续编程之前等待exec函数结束
也与此相关(并有相同的答案):How to execute shell commands synchronously in PHP