我希望能够在任何时候启动Gearman客户端,从而在后台运行。
我通过打开两个到我的服务器的SSH连接找到了成功,一个启动了worker,另一个启动了运行客户端。这会产生所需的输出。
问题在于,我希望工作人员在后台不断运行,这样我就可以在需要完成流程时调用客户端。但是当我关闭运行工作程序PHP文件的终端时,对客户端的调用不起作用 - 工作者似乎死了。
是否有办法让工作人员在后台持续运行,因此调用新客户端无需启动新工作人员即可工作?
谢谢!
答案 0 :(得分:6)
如果您希望程序在其父级已经死亡后继续运行(即您已关闭终端),则必须使用nohup
调用该程序:
nohup your-command &
引用我链接到的相关维基百科页面:
nohup
是要忽略的POSIX命令HUP
(挂断)信号,启用 该命令继续运行之后 发出命令的用户已登录 out 。
HUP
(挂断)信号是 按照惯例,终端警告的方式 取决于注销过程。
对于另一个(可能更多)有趣的解决方案,请参阅以下文章:Dæmonize Your PHP。
它指向Supervisord,这使得某个进程仍在运行,必要时重新启动它。
答案 1 :(得分:3)
是否有办法让工作人员在后台持续运行,因此调用新客户端无需启动新工作人员即可工作?
2009 PHP Advent日历有a quick article on using Supervisor(以及其他技巧)来创建不断运行的PHP脚本,而无需处理PHP本身的守护进程。