我正在解決php的pcntl_fork(),我注意到從CLI執行我得到了正確的結果,但是當我從apache執行它時,它給了我例外'未定義的函數pcntl_fork() '如何通過Apache執行pcntl函數
是的,我讀通過Apache執行不夠安全!
我的問題:
有什麼解決辦法,讓我通過Apache執行有PHP腳本pcntl_fork()實現?
爲什麼首先通過apache執行分叉並不安全,但是從CLI中安全地執行?
我正在解決php的pcntl_fork(),我注意到從CLI執行我得到了正確的結果,但是當我從apache執行它時,它給了我例外'未定義的函數pcntl_fork() '如何通過Apache執行pcntl函數
是的,我讀通過Apache執行不夠安全!
我的問題:
有什麼解決辦法,讓我通過Apache執行有PHP腳本pcntl_fork()實現?
爲什麼首先通過apache執行分叉並不安全,但是從CLI中安全地執行?
如果,例如,您希望腳本繼續運行即使在用戶取消了頁面請求(按下「停止」在他們的瀏覽器或「後退」或「刷新」等),那麼你可能想考慮ignore_user_abort
http://www.php.net/manual/en/function.ignore-user-abort.php。
至於爲什麼不允許從apache分支,這是因爲PHP如何與Apache接口。我沒有深入的瞭解這方面的細節,但可能是這樣的:
如果你使用mod_php,Apache會爲每個請求產生一個新的PHP進程。這意味着apache需要跟蹤每個進程並在請求結束後終止進程。
但是對於mod_fcgi和其他(我認爲),一個PHP進程會產生幾個請求,這意味着進程將繼續運行並接受新的請求。但是爲了控制內存泄漏,這些PHP子進程被定期終止。
現在,如果你嘗試在這些PHP進程中產生一個新的進程,坦白地說,我不知道會發生什麼。這個過程最有可能不會被殺死,並繼續佔用資源。