并行执行多个PHP脚本,并在完成时收到通知


Executing multiple PHP scripts in parallel, and being notified when finished

所以,这就是我要做的——实际上很不言自明:

  • 启动X个"同时"进程(每个进程绑定到不同的php脚本)
  • 能够说出所有何时完成

我已经研究了各种不同的方法,我可能会使用exec和后台进程。(大致如此)。

我真的无法理解的是:

我不知道哪种方法是检查是否所有流程都已完成的最有效方法(能够关注总体进度,例如完成Y中的X也是必须的)

重要的是时间效率,而且——显然——不会导致任何不必要的服务器过载(所以,我认为任何对实时pid的"冻结"while循环检查,即使是每隔一段时间,也是不可能的,对吧?)

非常欢迎任何建议!


p.S.:我最初是用从客户端开始的异步Ajax请求来设置这一切的,但我目前正在考虑迁移到非javascript的完全服务器端环境。不过,并行处理的问题仍然存在

您应该研究pcntl_fork和相关函数。这允许一个主进程形成多个子进程,并被通知子进程退出状态。

http://php.net/manual/en/function.pcntl-fork.php