不断运行的Gearman工人

时间:2011-04-01 20:51:15

标签: php gearman

我希望能够在任何时候启动Gearman客户端,从而在后台运行。

我通过打开两个到我的服务器的SSH连接找到了成功,一个启动了worker,另一个启动了运行客户端。这会产生所需的输出。

问题在于,我希望工作人员在后台不断运行,这样我就可以在需要完成流程时调用客户端。但是当我关闭运行工作程序PHP文件的终端时,对客户端的调用不起作用 - 工作者似乎死了。

是否有办法让工作人员在后台持续运行,因此调用新客户端无需启动新工作人员即可工作?

谢谢!

2 个答案:

答案 0 :(得分:6)

如果您希望程序在其父级已经死亡后继续运行(即您已关闭终端),则必须使用nohup调用该程序:

nohup your-command &


引用我链接到的相关维基百科页面:

  

nohup是要忽略的POSIX命令   HUP(挂断)信号,启用   该命令继续运行之后   发出命令的用户已登录   out
HUP(挂断)信号是   按照惯例,终端警告的方式   取决于注销过程。


对于另一个(可能更多)有趣的解决方案,请参阅以下文章:Dæmonize Your PHP

它指向Supervisord,这使得某个进程仍在运行,必要时重新启动它。

答案 1 :(得分:3)

  

是否有办法让工作人员在后台持续运行,因此调用新客户端无需启动新工作人员即可工作?

Supervisor

2009 PHP Advent日历有a quick article on using Supervisor(以及其他技巧)来创建不断运行的PHP脚本,而无需处理PHP本身的守护进程。