PHP异步进程通信

时间:2012-01-03 11:31:04

标签: php multithreading interprocess inter-process-communicat

有没有办法在PHP中实现进程间(或线程)通信,但是仍然保持一切都是异步的?

我希望有一个脚本创建4个进程,然后立即终止。 4个进程中的每一个都应该执行一个操作,一旦完成它应该通知某人(可能是另一个脚本?)它已完成。所以我想知道所有4个脚本何时完成,所以我可以将我的状态从检索更新为完成

这可能吗?最好不要重新编译PHP(我读过这是使用线程所必需的),但如果有必要,我会这样做。

3 个答案:

答案 0 :(得分:4)

正如其他人所说,Gearman是一个解决方案。另一个我真正喜欢的是创建一个异步消息队列,您可以在其中添加作业堆栈上的作业。

我正在使用ZeroMQ用于此目的,并且有一个PHP框架可用于为名为Photon的异步任务实现ZeroMQ。浏览Photon的源代码可能会为您提供有关如何实现异步作业队列的一些想法,以防您决定使用它。

答案 1 :(得分:2)

Gearman可能会提供您所需要的内容。

答案 2 :(得分:1)

您可以使用作业排队系统或将其粘贴到CRON中。 PHP支持一些作业队列,但我过去使用过Gearman,我写了custom wrapper around the Linux at command。这两种方法都可用于实现“类似线程”的​​行为而无需重新编译PHP。