2012-10-11 60 views
14

我搜索了很多以找到確切的答案,但沒有找到任何。使用可執行函數的php後臺進程

很多人提到我們應該在&之後不要等待迴應。
例如運行bg.php背景,此建議:

exec("/usr/bin/php bg.php &"); 

,但它不爲我工作。主腳本等待完成執行bg.php

我也讀過某處寫bg.php在日誌文件中輸出,但我的後臺腳本不會產生任何輸出。它執行一些過程,然後在數據庫中寫入內容。

我只想我的腳本運行bg.php,不要等它結束。

請幫助我,包括正確的代碼。

回答

18

你必須重新路由程序輸出過的地方,通常的/ dev/null的

exec($cmd . " > /dev/null &"); 
+0

工作正常!但什麼是/ dev/null目錄?該命令是否將輸出寫入文件? – Aliweb

+1

/dev/null只是丟棄發送給它的數據,如果需要程序輸出,您可以選擇將其路由到某個文件 – ninaj

0

你有沒有考慮過使用屏幕?您可以啓動在分離進程中運行的屏幕會話。

screen -d -m -S my_bg_session /usr/bin/php bg.php 

然後,你可以稍後連接到它,如果它仍在運行:

screen -r my_bg_session