我有一个进程,我希望能够通过随时启动 Gearman 客户端在后台运行。
通过打开到我的服务器的两个 SSH 连接,我找到了成功,其中一个启动工作程序,另一个然后运行客户端。这会产生所需的输出。
问题是,我想让一个工作人员在后台不断运行,这样我就可以在需要完成该过程时调用一个客户端。但是,一旦我关闭运行工作 PHP 文件的终端,对客户端的调用就不起作用 - 工作人员似乎死了。
有没有办法让工作人员在后台不断运行,所以调用一个新的客户端就可以工作而不必启动一个新的工作人员?
谢谢!
如果您希望程序即使在其父程序已死后仍能继续运行(即您已关闭终端),则必须使用以下命令调用它nohup
:
nohup your-command &
引用我链接到的相关维基百科页面:
nohup
是一个忽略HUP
(hangup) 信号的 POSIX 命令,使命令在发出命令的用户注销后继续运行。
按照HUP
惯例,(挂断)信号是终端根据注销进程发出警告的方式。
有关另一个(可能更)有趣的解决方案,请参阅以下文章:Dæmonize Your PHP。
它指向Supervisord,它确保进程仍在运行,并在必要时重新启动它。
有没有办法让工作人员在后台不断运行,所以调用一个新的客户端就可以工作而不必启动一个新的工作人员?
主管!
2009 PHP Advent Calendar 有一篇关于使用 Supervisor(和其他技巧)创建持续运行的 PHP 脚本而无需处理 PHP 本身的守护进程的快速文章。