我目前正在考虑产生50多个PHP工作者脚本实例,这些实例主要是网络绑定的。他们将从中央作业队列中出列并执行他们的工作,然后从队列中获取更多工作。我希望这些只是(1)工作的时间。
在启动时我需要生成这些进程,除了循环中明显的exec之外,生成PHP脚本的最佳方法是什么?我也希望能够优雅地关闭。
我可以使用一些代码来查找关闭通知但不确定PHP中是否有更清晰的方法
感谢
答案 0 :(得分:1)
查看PCNTL functions特定功能,如pcntl_fork()
我们目前使用它的方式是在一个循环内,每个新进程分离它的工作和退出。虽然主循环继续处理信息等...
答案 1 :(得分:1)
看看Gearman,就是你所说的:乔布斯和工人。
答案 2 :(得分:1)
如果可能的话,请避免使用php脚本。它让事情变得混乱,甚至是PHP成名的Rasmus Lerdof认为这是一个坏主意。 PHP不适用于长时间运行的进程,这是您的父进程执行分叉的过程。
更好的解决方案(但不是唯一的)是使用类似pythons supervisord(不需要使用python知识)来管理php worker。它会重新启动死亡工作人员,在预设时间后重新启动现有工作人员,或超过内存限制。
要获得额外的胜利,您还可以使用gearman来安排工作。