PHP擴(kuò)展程序?qū)崿F(xiàn)守護(hù)進(jìn)程
一般Server程序都是運(yùn)行在系統(tǒng)后臺(tái),這與普通的交互式命令行程序有很大的區(qū)別。glibc里有一個(gè)函數(shù)daemon。調(diào)用此函數(shù),就可使當(dāng)前進(jìn)程脫離終端變成一個(gè)守護(hù)進(jìn)程,具體內(nèi)容參見man daemon。PHP中暫時(shí)沒有此函數(shù),當(dāng)然如果你有興趣的話,可以寫一個(gè)PHP的擴(kuò)展函數(shù)來實(shí)現(xiàn)。
PHP命令行程序?qū)崿F(xiàn)守護(hù)進(jìn)程化有2種方法:
一 、使用nohup
nohup php myprog.php > log.txt &
這里就實(shí)現(xiàn)了守護(hù)進(jìn)程化。
單獨(dú)執(zhí)行 php myprog.php,當(dāng)按下ctrl+c時(shí)就會(huì)中斷程序執(zhí)行,會(huì)kill當(dāng)前進(jìn)程以及子進(jìn)程。
php myprog.php &,這樣執(zhí)行程序雖然也是轉(zhuǎn)為后臺(tái)運(yùn)行,實(shí)際上是依賴終端的,當(dāng)用戶退出終端時(shí)進(jìn)程就會(huì)被殺掉。
二、使用PHP代碼來實(shí)現(xiàn)
function daemonize()
{
$pid = pcntl_fork();
if ($pid == -1)
{
die("fork(1) failed!\n");
}
elseif ($pid > 0)
{
//讓由用戶啟動(dòng)的進(jìn)程退出
exit(0);
}
//建立一個(gè)有別于終端的新session以脫離終端
posix_setsid();
$pid = pcntl_fork();
if ($pid == -1)
{
die("fork(2) failed!\n");
}
elseif ($pid > 0)
{
//父進(jìn)程退出, 剩下子進(jìn)程成為最終的獨(dú)立進(jìn)程
exit(0);
}
}
daemonize();
sleep(1000);
用上面代碼即可實(shí)現(xiàn)守護(hù)進(jìn)程化,當(dāng)你的PHP程序需要轉(zhuǎn)為后臺(tái)運(yùn)行時(shí),只需要調(diào)用一次封裝好的函數(shù)daemonize()即可。
注:這里沒有實(shí)現(xiàn)標(biāo)準(zhǔn)輸入輸出的重定向。
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
PHP實(shí)現(xiàn)的曲線統(tǒng)計(jì)圖表示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的曲線統(tǒng)計(jì)圖表,結(jié)合實(shí)例形式分析了php基于圖形繪制實(shí)現(xiàn)曲線統(tǒng)計(jì)圖展現(xiàn)功能的相關(guān)操作技巧,需要的朋友可以參考下2016-11-11
PHP防止sql注入小技巧之sql預(yù)處理原理與實(shí)現(xiàn)方法分析
這篇文章主要介紹了PHP防止sql注入小技巧之sql預(yù)處理原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了PHP防止sql注入的sql預(yù)處理操作詳細(xì)實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2019-12-12
詳解php的魔術(shù)方法__get()和__set()使用介紹
php的魔術(shù)方法__get()和__set()使用介紹,需要的朋友可以參考下2012-09-09
PHP preg_match實(shí)現(xiàn)正則表達(dá)式匹配功能【輸出是否匹配及匹配值】
這篇文章主要介紹了PHP preg_match實(shí)現(xiàn)正則表達(dá)式匹配功能,較為詳細(xì)的介紹了preg_match函數(shù)的功能、參數(shù)含義、返回值及使用方法,并結(jié)合實(shí)例給出了preg_match輸出是否匹配及匹配值的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07
PHP+MariaDB數(shù)據(jù)庫操作基本技巧備忘總結(jié)
這篇文章主要介紹了PHP+MariaDB數(shù)據(jù)庫操作基本技巧,結(jié)合實(shí)例形式總結(jié)分析了PHP+MariaDB數(shù)據(jù)庫連接、判斷以及基于PHP+MariaDB的用戶登陸、管理、刪除等相關(guān)操作實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2018-05-05

