执行多个PHP脚本是一次运行一个还是同时运行?

执行多个PHP脚本是一次运行一个还是同时运行?,php,exec,Php,Exec,在PHP中使用exec命令执行多个脚本时;每个脚本是一次一个地运行,就像一个接一个地运行一样,还是同时运行 exec('/usr/bin/php -q process-duplicates.php'); exec('/usr/bin/php -q process-images.php'); exec('/usr/bin/php -q process-sitemaps.php'); 在尝试重写我的crontab之前,只想确保它们是一个接一个的。exec等待脚本返回,请参阅 如果使用此函数启动程序

在PHP中使用
exec
命令执行多个脚本时;每个脚本是一次一个地运行,就像一个接一个地运行一样,还是同时运行

exec('/usr/bin/php -q process-duplicates.php');
exec('/usr/bin/php -q process-images.php');
exec('/usr/bin/php -q process-sitemaps.php');

在尝试重写我的crontab之前,只想确保它们是一个接一个的。

exec等待脚本返回,请参阅

如果使用此函数启动程序,为了使其在后台继续运行,程序的输出必须重定向到文件或其他输出流。否则将导致PHP挂起,直到程序执行结束


但是作为devops,请不要像这样运行您的cron作业!在crontab中为每个脚本创建条目,或者将它们放在shell脚本中,并让cron运行脚本。

当然,在后台运行的唯一方法是向命令行参数中添加&以将exec()d进程置于后台:

exec("php test.php &"); 
你说得对,他们一个接一个地跑


注意:在您的情况下,您不应该使用
&
,因为这将强制同时运行所有脚本。

只需添加这样的脚本即可?exec('/usr/bin/php-q process-duplicates.php&');给每个人?我试试看。谢谢,不,如果我解释错了,很抱歉,这会导致你做你不想做的事情,请确保不要使用它,如果我让你理解错了,我很抱歉,我添加了--exec('php process-duplicates.php&');这很好地发挥了作用。总是有这样的印象——根据我在网上读到的内容,您需要php的/user/bin/path。谢谢你给我指明了那条路;)看看你的其他评论;正如您上面所写的那样,有人可以从cron之外的HTTP请求执行此脚本吗?如果有人这样做并加载100次会发生什么?服务器将以多快的速度消亡?将它们放入crontab,而不是PHP脚本中。正如下面的答案中所提到的,它是同步的(一次一个),但是如果您想在PHP中执行异步操作,您可能需要查看一下。特别是。像这样的shell脚本
shell\u exec
?很抱歉这么问——我是PHP新手,正在为自己开发更新的东西!Thanks@TopResults不用担心,我们都在学习:)。shell脚本与
shell_exec
没有任何共同之处,在windows下,您可以将“bat”文件称为shell脚本。在unix/linux/mac系统上,shell脚本是由shell或命令行执行的命令脚本,请参阅:再次感谢。正在阅读如何制作shell脚本(更多学习)!!如果你不介意我再问一个问题的话。为什么不像这样运行cron作业?@TopResults,因为您正在加载一个巨大的框架(PHP),只是为了启动更多脚本。它浪费CPU资源、内存和内存。