我有一個PHP passthru()
阻塞時,它應該啓動守護進程的問題。PHP passthru()塊與進程更換
我有一個Node.js守護進程和一個bash腳本包裝器。該bash腳本使用了一些進程替換,因爲Node.js服務器不能直接登錄到syslog。在bash腳本包含這樣的命令:
forever -l app.log app.js
但是,因爲我希望它記錄到系統日誌,我使用:
forever -l >(logger) app.js
的logger
處理替換創建的文件描述符像/dev/fd/63
傳遞其路徑以forever
命令作爲要使用的日誌文件。
當我直接使用bash腳本啓動守護程序時,這種方式很好用,但是當使用PHP passthru()或exec()執行bash腳本時,這些調用將會阻塞。如果我使用常規日誌文件而不是進程替換,那麼passthru()和exec()都可以正常工作,在後臺啓動守護進程。
我已經創建了一個完整的工作示例(使用一個簡單的PHP後臺程序代替的Node.js)在Github上的要點是:https://gist.github.com/1977896(需要PHP 5.3.6+)
爲什麼在過程中更換passthru()
通話塊?我能做些什麼來解決它嗎?