我需要运行CMD通过多个脚本(5个脚本),我要确保,除非和直到第一个脚本结束第二不应该启动。 因此,后则第一个脚本完成第二只应是那么第三个等。目前我使用下面的代码来做到这一点
exec ("php phpscript1.php ");
exec ("php phpscript2.php ");
exec ("php phpscript3.php ");
exec ("php phpscript4.php ");
exec ("php phpscript5.php ");
我认为,这些脚本异步运行,任何建议的家伙,使这些脚本可以同步运行。
PHP 的exec会等到调用程序的执行完毕,处理下一行之前,除非您使用与在字符串的结束在后台运行程序。
如果我得到你的权利,你从一个PHP脚本内部执行PHP脚本。
通常情况下,PHP等待的执行exec ("php phpscript1.php");
处理下一行之前完成。
为了避免这种情况,只需将输出重定向到/dev/null
或文件,并在后台运行。
例如: exec ("php phpscript1.php >/dev/null 2>&1 &");
。
退房EXEC上php.net函数的语法。 你会看到, exec
默认情况下不异步运行任何东西。
exec
有另外两个参数。 第三个, return_var
可以给你一个暗示,如果脚本成功运行,或任何异常被解雇了。 您可以使用该变量来检查,如果你能运行随后的脚本。
测试它,让我们知道它是否适合你。
In my opinion, it would be better to run cronjobs. They will execute synchronously. If the task is "on-the-fly", you could execute the command to add this cronjob. More information about cronjobs:
http://unixgeeks.org/security/newbie/unix/cron-1.html
http://service.futurequest.net/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=30
无论Exec和系统等待的脚本来执行,除非你不分叉。
Check.php
<?php
echo "here ".__LINE__."\n";
exec ("php phpscript1.php");
echo "here ".__LINE__."\n";
system("php phpscript2.php");
echo "here ".__LINE__."\n";
?>
phpscript1.php
<?php
echo "=================phpscript1.php\n";
sleep(5);
?>
phpscript2.php
<?php
echo "=================phpscript2.php\n";
sleep(5);
?>
Check.php执行SCRIPT1 5秒然后显示下一行号,然后通过印刷下一行执行SCRIPT2。