生成和关闭PHP进程的最有效方法是什么?

时间:2010-12-13 20:59:33

标签: php

我目前正在考虑产生50多个PHP工作者脚本实例,这些实例主要是网络绑定的。他们将从中央作业队列中出列并执行他们的工作,然后从队列中获取更多工作。我希望这些只是(1)工作的时间。

在启动时我需要生成这些进程,除了循环中明显的exec之外,生成PHP脚本的最佳方法是什么?我也希望能够优雅地关闭。

我可以使用一些代码来查找关闭通知但不确定PHP中是否有更清晰的方法

感谢

3 个答案:

答案 0 :(得分:1)

查看PCNTL functions特定功能,如pcntl_fork()

我们目前使用它的方式是在一个循环内,每个新进程分离它的工作和退出。虽然主循环继续处理信息等...

答案 1 :(得分:1)

看看Gearman,就是你所说的:乔布斯和工人。

答案 2 :(得分:1)

如果可能的话,请避免使用php脚本。它让事情变得混乱,甚至是PHP成名的Rasmus Lerdof认为这是一个坏主意。 PHP不适用于长时间运行的进程,这是您的父进程执行分叉的过程。

更好的解决方案(但不是唯一的)是使用类似pythons supervisord(不需要使用python知识)来管理php worker。它会重新启动死亡工作人员,在预设时间后重新启动现有工作人员,或超过内存限制。

要获得额外的胜利,您还可以使用gearman来安排工作。