有没有办法在 PHP 中实现进程间(或线程)通信,但仍然保持一切异步运行?
我想要一个创建 4 个进程然后立即终止的脚本。4 个进程中的每一个都应该执行一个操作,完成后它应该通知某人(可能是另一个脚本?)它完成了。所以我想知道所有 4 个脚本什么时候完成,所以我可以将我的状态从retrieving更新为done。
这可能吗?最好不要重新编译 PHP(我读到这是使用线程所必需的),但如果有必要我会这样做。
有没有办法在 PHP 中实现进程间(或线程)通信,但仍然保持一切异步运行?
我想要一个创建 4 个进程然后立即终止的脚本。4 个进程中的每一个都应该执行一个操作,完成后它应该通知某人(可能是另一个脚本?)它完成了。所以我想知道所有 4 个脚本什么时候完成,所以我可以将我的状态从retrieving更新为done。
这可能吗?最好不要重新编译 PHP(我读到这是使用线程所必需的),但如果有必要我会这样做。
正如其他人所提到的,Gearman 是一种解决方案。另一个,我更喜欢的,是创建一个异步消息队列,您可以在其中在作业堆栈上添加作业。
我将ZeroMQ用于此类目的,并且有一个可用的 PHP 框架为称为Photon的异步任务实现 ZeroMQ 。浏览 Photon 的源代码可能会给你一些关于如何实现异步作业队列的想法,以防你决定使用它。
Gearman可能会提供您正在寻找的东西。
您可以使用作业排队系统或将其粘贴到 CRON 中。PHP 支持一些作业队列,但我过去使用过Gearman ,并且我已经围绕 Linuxat
命令编写了一个自定义包装器。这两者都可以用来实现“类似线程”的行为,而无需重新编译 PHP。