摘要:調用此函數,就可使當前進程脫離終端變成一個守護進程,具體內容參見。命令行程序實現守護進程化有種方法一使用這里就實現了守護進程化。多帶帶執行,當按下時就會中斷程序執行,會當前進程以及子進程。
一般Server程序都是運行在系統后臺,這與普通的交互式命令行程序有很大的區別。glibc里有一個函數daemon。調用此函數,就可使當前進程脫離終端變成一個守護進程,具體內容參見man daemon。PHP中暫時沒有此函數,當然如果你有興趣的話,可以寫一個PHP的擴展函數來實現。
PHP命令行程序實現守護進程化有2種方法:
一 、使用nohup
nohup php myprog.php > log.txt &
這里就實現了守護進程化。
多帶帶執行 php myprog.php,當按下ctrl+c時就會中斷程序執行,會kill當前進程以及子進程。
php myprog.php &,這樣執行程序雖然也是轉為后臺運行,實際上是依賴終端的,當用戶退出終端時進程就會被殺掉。
二、使用PHP代碼來實現
function daemonize() { $pid = pcntl_fork(); if ($pid == -1) { die("fork(1) failed! "); } elseif ($pid > 0) { //讓由用戶啟動的進程退出 exit(0); } //建立一個有別于終端的新session以脫離終端 posix_setsid(); $pid = pcntl_fork(); if ($pid == -1) { die("fork(2) failed! "); } elseif ($pid > 0) { //父進程退出, 剩下子進程成為最終的獨立進程 exit(0); } } daemonize(); sleep(1000);
用上面代碼即可實現守護進程化,當你的PHP程序需要轉為后臺運行時,只需要調用一次封裝好的函數daemonize()即可。
注:這里沒有實現標準輸入輸出的重定向。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31921.html
摘要:做了一次分享,主題使用搭建開發環境,簡單介紹了一下的概念,演示了使用構建全套環境。應場景通常于如下場景應的動化打包和發布動化測試和持續集成發布在服務型環境中部署和調整數據庫或其他的后臺應從頭編譯或者擴展現有的或平臺來搭建的環境。 做了一次分享,主題《使用 Docker 搭建開發環境》,簡單介紹了一下 Docker 的概念,演示了使用 Docker-compose 構建全套 PHP 環境...
摘要:做了一次分享,主題使用搭建開發環境,簡單介紹了一下的概念,演示了使用構建全套環境。應場景通常于如下場景應的動化打包和發布動化測試和持續集成發布在服務型環境中部署和調整數據庫或其他的后臺應從頭編譯或者擴展現有的或平臺來搭建的環境。 做了一次分享,主題《使用 Docker 搭建開發環境》,簡單介紹了一下 Docker 的概念,演示了使用 Docker-compose 構建全套 PHP 環境...
摘要:是一個基于擴展實現的輕量級高性能的常駐內存型的和應用服務框架高度封裝了,,服務器,以及基于實現可擴展的服務,同時支持包方式安裝部署項目。基于實用,抽象事件處理類,實現與底層的回調的解耦,支持同步異步調用,內置等常用組件等。 swoolefy swoolefy是一個基于swoole擴展實現的輕量級高性能的常駐內存型的API和Web應用服務框架,高度封裝了http,websocket,ud...
摘要:原文地址音標中文含義為守護神或精靈的意思其實它還有個意思守護進程守護進程簡單地說就是可以脫離終端而在后臺運行的進程這在中是非常常見的一種進程比如或者等服務啟動后就會以守護進程的方式進駐在內存中以為例假如我有個耗時間的任務需要跑在后臺將所有 [原文地址:https://blog.ti-node.com/blog...] daemon 音標 : [di:m?n] , 中文含義為守護神或精靈...
閱讀 853·2021-11-19 11:29
閱讀 3347·2021-09-26 10:15
閱讀 2854·2021-09-22 10:02
閱讀 2431·2021-09-02 15:15
閱讀 1970·2019-08-30 15:56
閱讀 2407·2019-08-30 15:54
閱讀 2903·2019-08-29 16:59
閱讀 634·2019-08-29 16:20