《PHP學習:PHP擴展程序實現守護進程》要點:
本文介紹了PHP學習:PHP擴展程序實現守護進程,希望對您有用。如果有疑問,可以聯系我們。
PHP學習一般Server程序都是運行在系統后臺,這與普通的交互式命令行程序有很大的區別.glibc里有一個函數daemon.調用此函數,就可使當前進程脫離終端變成一個守護進程,具體內容參見man daemon.PHP中暫時沒有此函數,當然如果你有興趣的話,可以寫一個PHP的擴展函數來實現.
PHP學習PHP命令行程序實現守護進程化有2種辦法:
PHP學習一 、使用nohup
PHP學習這里就實現了守護進程化.
PHP學習單獨執行 php myprog.php,當按下ctrl+c時就會中斷程序執行,會kill當前進程以及子進程.
PHP學習php myprog.php &,這樣執行程序雖然也是轉為后臺運行,實際上是依賴終端的,當用戶退出終端時進程就會被殺掉.
PHP學習二、使用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學習用上面代碼即可實現守護進程化,當你的PHP程序必要轉為后臺運行時,只必要調用一次封裝好的函數daemonize()即可.
注:這里沒有實現標準輸入輸出的重定向.
PHP學習以上所述便是本文的全部內容了,希望大家能夠喜歡.
《PHP學習:PHP擴展程序實現守護進程》是否對您有啟發,歡迎查看更多與《PHP學習:PHP擴展程序實現守護進程》相關教程,學精學透。維易PHP學院為您提供精彩教程。