2011-04-01 87 views
3

我有一个过程,我希望能够随时启动一个Gearman客户端在后台运行。不断运行的Gearman工作人员

我已经找到了成功,打开两个SSH连接到我的服务器,并在一个启动工人,另一个然后运行客户端。这产生了所需的输出。

问题是,我希望有一名工作人员不断在后台运行,因此只要需要完成此过程,我就可以调用客户端。但是,只要我关闭了工作PHP文件运行的终端,就不会有对客户的调用 - 工作者似乎死了。

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

谢谢!

回答

6

如果你想有一个程序继续运行即使其母公司是死的(即您关闭终端),您必须使用nohup调用它:

nohup your-command & 


引述有关维基百科页面我地连接至:

nohup是POSIX命令忽略 的HUP(挂机)信号,使得能够 吨他命令在 发出该命令的用户登录 列出后继续运行。
按照惯例,HUP(挂机)信号是 终端根据注销过程警告 。


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

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

+0

非常感谢马丁,一如既往的大力帮助!在PHP脚本上调用nohup会让它永远运行,还是需要设置某种非超时设置? – 2011-04-01 21:00:08

+0

您仍然会配置'max_execution_time' *(并且扩展名为'memory_limit')*,所以您的脚本在一段时间后不会被杀死。 – 2011-04-01 21:02:58

3

有没有办法让工作人员在后台不停地运行,所以调用新客户端无需启动新工作人员就可以工作?

Supervisor

2009年PHP出现日历有a quick article on using Supervisor(和其他技巧)创建不断运行的PHP脚本,而不必处理PHP本身的守护进程。

+1

我跟着这篇文章来让我自己的gearman设置工作。我在这里写了博客:http://blog.preinheimer.com/index.php?/archives/359-Wheres-it-Up.html以及当我搞砸在这里时发生故障:http://blog.preinheimer .COM /的index.php?/archives/361-Wheres-it-up-Outage.html – preinheimer 2011-04-01 20:56:54