我试图延迟执行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
我没有看到任何错误的输出,你延迟执行10秒,你得到它的结果。不要期望script2.php在第一个脚本之后执行,因为PHP将等待exec函数结束,然后再继续执行
程序。也与此相关(并且有相同的答案):如何在PHP中同步执行shell命令