有没有办法在PHP中实现进程间(或线程)通信,但是仍然保持一切都是异步的?
我希望有一个脚本创建4个进程,然后立即终止。 4个进程中的每一个都应该执行一个操作,一旦完成它应该通知某人(可能是另一个脚本?)它已完成。所以我想知道所有4个脚本何时完成,所以我可以将我的状态从检索更新为完成。
这可能吗?最好不要重新编译PHP(我读过这是使用线程所必需的),但如果有必要,我会这样做。
答案 0 :(得分:4)
正如其他人所说,Gearman是一个解决方案。另一个我真正喜欢的是创建一个异步消息队列,您可以在其中添加作业堆栈上的作业。
我正在使用ZeroMQ用于此目的,并且有一个PHP框架可用于为名为Photon的异步任务实现ZeroMQ。浏览Photon的源代码可能会为您提供有关如何实现异步作业队列的一些想法,以防您决定使用它。
答案 1 :(得分:2)
Gearman可能会提供您所需要的内容。
答案 2 :(得分:1)
您可以使用作业排队系统或将其粘贴到CRON中。 PHP支持一些作业队列,但我过去使用过Gearman,我写了custom wrapper around the Linux at
command。这两种方法都可用于实现“类似线程”的行为而无需重新编译PHP。