2011-04-01 91 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