PHP擴充程式實現守護進程,php擴充守護進程
一般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!\n");}elseif ($pid > 0){//讓由使用者啟動的進程退出exit(0);}//建立一個有別於終端的新session以脫離終端posix_setsid();$pid = pcntl_fork();if ($pid == -1){die("fork(2) failed!\n");}elseif ($pid > 0){//父進程退出, 剩下子進程成為最終的獨立進程exit(0);}}daemonize();sleep(1000);
用上面代碼即可實現守護進程化,當你的PHP程式需要轉為後台運行時,只需要調用一次封裝好的函數daemonize()即可。
註:這裡沒有實現標準輸入輸出的重新導向。
以上所述就是本文的全部內容了,希望大家能夠喜歡。
http://www.bkjia.com/PHPjc/985276.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/985276.htmlTechArticlePHP擴充程式實現守護進程,php擴充守護進程 一般Server程式都是運行在系統後台,這與普通的互動式命令列程式有很大的區別。glibc裡有一個...