3

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

我想要一个创建 4 个进程然后立即终止的脚本。4 个进程中的每一个都应该执行一个操作,完成后它应该通知某人(可能是另一个脚本?)它完成了。所以我想知道所有 4 个脚本什么时候完成,所以我可以将我的状态从retrieving更新为done

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

4

3 回答 3

4

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

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

于 2012-01-03T11:41:58.850 回答
2

Gearman可能会提供您正在寻找的东西。

于 2012-01-03T11:32:50.843 回答
1

您可以使用作业排队系统或将其粘贴到 CRON 中。PHP 支持一些作业队列,但我过去使用过Gearman ,并且我已经围绕 Linuxat命令编写了一个自定义包装器。这两者都可以用来实现“类似线程”的​​行为,而无需重新编译 PHP。

于 2012-01-03T11:35:54.143 回答