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

生成和关闭PHP进程最有效的方法是什么?,php,Php,我目前正在考虑生成50多个PHP worker脚本实例,这些实例主要是网络绑定的。他们将从中心作业队列中退出队列并执行其工作,然后从队列中获取更多工作。我预计这些将是正在运行的while(1)作业 在启动时,我需要生成这些进程,除了循环中明显的exec之外,生成PHP脚本的最佳方法是什么?我也希望能够优雅地关机 我可以输入一些代码来查找关闭通知,但不确定PHP中是否有更干净的方法 谢谢查看具体的函数,如pcntl_fork() 我们目前使用它的方式是在一个循环中,每个新流程分叉完成它的工作并退出

我目前正在考虑生成50多个PHP worker脚本实例,这些实例主要是网络绑定的。他们将从中心作业队列中退出队列并执行其工作,然后从队列中获取更多工作。我预计这些将是正在运行的while(1)作业

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

我可以输入一些代码来查找关闭通知,但不确定PHP中是否有更干净的方法

谢谢

查看具体的函数,如pcntl_fork()

我们目前使用它的方式是在一个循环中,每个新流程分叉完成它的工作并退出。当主循环继续处理信息等时,

查看具体的函数,如pcntl_fork()


我们目前使用它的方式是在一个循环中,每个新流程分叉完成它的工作并退出。当主循环继续处理信息等时。

看看Gearman,这正是你所说的:作业和工人。

看看Gearman,这正是你所说的:作业和工人。

如果可能,避免使用php脚本。它让事情变得一团糟,甚至连PHP名人拉斯穆斯·勒多夫(Rasmus Lerdof)都认为这是个坏主意。PHP并不适用于长时间运行的进程,而执行分叉的父进程就是长时间运行的进程

更好的解决方案(但不是唯一的)是使用类似pythonssupervisord(无需使用python知识)的工具来管理php工作人员。它可以重新启动死掉的工作线程,在预设时间后或超过内存限制时重新启动活的工作线程


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

如果可能的话,请避免分叉php脚本。它让事情变得一团糟,甚至连PHP名人拉斯穆斯·勒多夫(Rasmus Lerdof)都认为这是个坏主意。PHP并不适用于长时间运行的进程,而执行分叉的父进程就是长时间运行的进程

更好的解决方案(但不是唯一的)是使用类似pythonssupervisord(无需使用python知识)的工具来管理php工作人员。它可以重新启动死掉的工作线程,在预设时间后或超过内存限制时重新启动活的工作线程


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

使用php fpm切换到nginx,让fpm为您完成任务:DW他为什么会使用web服务器来编写CLI脚本?使用php fpm切换到nginx,让fpm为您执行此操作:为什么他会使用web服务器来编写CLI脚本?这是一个单独的问题,也许最适合serverfault,但在进程超过内存限制后,如何要求它重新启动进程?我在Supervisor Docs中看不到这一点。Perlance是我想到的第一个选项,另一个选项是可以监视各种各样的守护进程等。希望这足以让您开始一个单独的问题,可能最适合serverfault,但您如何要求它在进程超过内存限制后重新启动进程?我在Supervisor Docs中看不到这一点。Perlance是我想到的第一个选项,另一个选项是可以监视各种各样的守护进程等。希望这足以让你开始