3

我有一个进程,我希望能够通过随时启动 Gearman 客户端在后台运行。

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

问题是,我想让一个工作人员在后台不断运行,这样我就可以在需要完成该过程时调用一个客户端。但是,一旦我关闭运行工作 PHP 文件的终端,对客户端的调用就不起作用 - 工作人员似乎死了。

有没有办法让工作人员在后台不断运行,所以调用一个新的客户端就可以工作而不必启动一个新的工作人员?

谢谢!

4

2 回答 2

6

如果您希望程序即使在其父程序已死后仍能继续运行(即您已关闭终端),则必须使用以下命令调用它nohup

nohup your-command &


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

nohup是一个忽略HUP(hangup) 信号的 POSIX 命令,使命令在发出命令的用户注销后继续运行
按照HUP惯例,(挂断)信号是终端根据注销进程发出警告的方式。


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

它指向Supervisord,它确保进程仍在运行,并在必要时重新启动它。

于 2011-04-01T20:53:50.193 回答
3

有没有办法让工作人员在后台不断运行,所以调用一个新的客户端就可以工作而不必启动一个新的工作人员?

主管

2009 PHP Advent Calendar 有一篇关于使用 Supervisor(和其他技巧)创建持续运行的 PHP 脚本而无需处理 PHP 本身的守护进程的快速文章。

于 2011-04-01T20:53:55.837 回答