【发布时间】:2016-09-13 06:59:10
【问题描述】:
我必须从 PHP 启动许多脚本并尽可能快地完成它们。不过,这些脚本是用不同的语言编写的。我以某种方式启动了它们,但我不知道如何等待它们。我的代码:
foreach ($commands as $command) {
exec($command.' &');
}
PHP 脚本停止执行,但后台仍有大量工作。如何在 PHP 中等待这些任务?
类似问题:
Parallel processing in PHP - How do you do it? – 等待/同步被忽略
Executing multiple PHP scripts in parallel, and being notified when finished – 仅限于 PHP 脚本
【问题讨论】:
-
您是否控制这些脚本并可以添加其他功能?如果需要等待,为什么还要执行后台进程?
-
@Justinas 我只控制 PHP。我有很多脚本要执行,很多内核要使用,而且时间不够。
-
@h2ooooooo 我不执行并行 PHP 脚本。我只从 PHP 开始。
-
@Michas 它们可能仅适用于 PHP 脚本(因为在使用
nohup或任何其他并行命令运行它们时,您可以得到通知的唯一方法是以特殊方式返回的程序)但是你可以简单地制作一个 PHP 脚本启动器,这样它就可以运行MainPHP -> many PHPScriptLaunchers -> exec()。这样你就可以解决仅在 PHP 中的问题。如果这不可能,请阅读this solution。