我目前正在PHP脚本中运行这些行:
foreach ($list as $route)
{
exec('php-cgi ./nextbus-route_stop_predictions.php route=' . $route['route_id']);
}
nextbus-route_stop_predictions.php需要大约15秒才能运行,而exec()大约运行12次。我想知道PHP是否能够运行这些命令行而无需等待前一个exec()的输出。所以基本上,我想运行这个异步/多进程。
更新
对于仍在寻找答案的人,我使用了nohup
并将输出传输到/dev/null
答案 0 :(得分:3)
pcntl_fork()
可能会有所帮助。
pcntl_fork()函数创建一个子进程,该进程与父进程的PID和PPID不同。有关fork如何在系统上运行的具体详细信息,请参见系统的fork(2)手册页。
答案 1 :(得分:0)
如果你正在运行php作为Apache模块,你可以做到这里提到的技巧
http://joseph.randomnetworks.com/archives/2005/10/21/fake-fork-in-php/
exec("php-cgi ./nextbus-route_stop_predictions.php route=" . $route['route_id'] . " 2>/dev/null >&- < &- >/dev/null &");
基本上重新路由stderr,stdout并将进程发送到后台。