PHP程序守護(hù)進(jìn)程化實(shí)現(xià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ù)來(lái)實(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代碼來(lái)實(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)輸入輸出的重定向。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- PHP實(shí)現(xiàn)守護(hù)進(jìn)程的示例代碼
- php實(shí)現(xiàn)簡(jiǎn)單的守護(hù)進(jìn)程創(chuàng)建、開啟與關(guān)閉操作
- PHP守護(hù)進(jìn)程的兩種常見實(shí)現(xiàn)方式詳解
- php腳本守護(hù)進(jìn)程原理與實(shí)現(xiàn)方法詳解
- 分享PHP守護(hù)進(jìn)程類
- 如何寫php守護(hù)進(jìn)程(Daemon)
- PHP擴(kuò)展程序?qū)崿F(xiàn)守護(hù)進(jìn)程
- PHP守護(hù)進(jìn)程實(shí)例
- php萬(wàn)字碼出完美守護(hù)進(jìn)程詳解
相關(guān)文章
php無(wú)限極分類遞歸排序?qū)崿F(xiàn)方法
這篇文章主要介紹了php無(wú)限極分類遞歸排序?qū)崿F(xiàn)方法,通過(guò)一個(gè)簡(jiǎn)單的遞歸函數(shù)實(shí)現(xiàn)無(wú)限遞歸分類排序,是非常實(shí)用的技巧,需要的朋友可以參考下2014-11-11
PHP圖片處理之使用imagecopyresampled函數(shù)裁剪圖片例子
這篇文章主要介紹了PHP圖片處理之使用imagecopyresampled函數(shù)裁剪圖片例子,本文例子相對(duì)簡(jiǎn)單,是一篇入門級(jí)的學(xué)習(xí)總結(jié),需要的朋友可以參考下2014-11-11
PHP中file_get_contents高級(jí)用法實(shí)例
這篇文章主要介紹了PHP中file_get_contents高級(jí)用法,包括了超時(shí)限制及實(shí)現(xiàn)POST等用法,需要的朋友可以參考下2014-09-09
關(guān)于PHP中Object對(duì)象的筆記分享
關(guān)于PHP中Object對(duì)象的筆記分享,學(xué)習(xí)php面向?qū)ο蟮呐笥芽梢詤⒖枷隆?/div> 2011-06-06
PHP+Ajax 檢測(cè)網(wǎng)絡(luò)是否正常實(shí)例詳解
這篇文章主要介紹了PHP+Ajax 檢測(cè)網(wǎng)絡(luò)是否正常實(shí)例詳解的相關(guān)資料,這里附有實(shí)例代碼,需要的朋友可以參考下2016-12-12
Linux fgetcsv取得的數(shù)組元素為空字符串的解決方法
使用CSV導(dǎo)入數(shù)據(jù)的時(shí)候,我們通常用的是Windows系統(tǒng),使用GBK在Windows的Excel中編輯2011-11-11最新評(píng)論

