用PHP寫daemon無法駐留的問題

來源:互聯網
上載者:User
比如下面這樣一個檔案test.php

 /dev/null 2>&1 & echo $!");?>

在終端下執行php test.php可以將進程留在後台
但是通過瀏覽器訪問test.php的時候,不能在後台留下進程

猜測可能是web進程中止同時把sleep也給中止了,要想一直留著,有什麼好的解決方案嗎?

回複內容:

比如下面這樣一個檔案test.php

 /dev/null 2>&1 & echo $!");?>

在終端下執行php test.php可以將進程留在後台
但是通過瀏覽器訪問test.php的時候,不能在後台留下進程

猜測可能是web進程中止同時把sleep也給中止了,要想一直留著,有什麼好的解決方案嗎?

用swoole擴充寫個PHP socket server,作為守護進程運行。

試試php的這個函數 ignore_user_abort 具體用法參考http://cn2.php.net/manual/en/function.ignore-user-abort.php

應該都在這了:
http://www.php.net/manual/en/features.connection-handling.php

基本上:

  1. 預設 如果遠程用戶端斷掉串連, 則指令碼中止. 通過ignore_user_abort(php.ini), ignore_user_abort(Apache httpd.conf), 或者調用 ignore_user_abort() 函數改變預設設定;

  2. 預設 指令碼最大已耗用時間為 30秒. 可以通過 max_execution_time(php.ini), max_execution_time(Apache httpd.conf) 或調用set_time_limit()函數修改.

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.