国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

PHP擴(kuò)展程序?qū)崿F(xiàn)守護(hù)進(jìn)程

2024-05-04 23:34:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

守護(hù)進(jìn)程就是在后臺(tái)一直運(yùn)行的進(jìn)程。比如我們啟動(dòng)的httpd,mysqld等進(jìn)程都是常駐內(nèi)存內(nèi)運(yùn)行的程序。,下面我們就來(lái)探討下,如何使用php來(lái)實(shí)現(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)容參見(jiàn)man daemon。PHP中暫時(shí)沒(méi)有此函數(shù),當(dāng)然如果你有興趣的話,可以寫(xiě)一個(gè)PHP的擴(kuò)展函數(shù)來(lái)實(shí)現(xiàn)。

PHP命令行程序?qū)崿F(xiàn)守護(hù)進(jìn)程化有2種方法:

一 、使用nohup

復(fù)制代碼代碼如下:

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í)際上是依賴(lài)終端的,當(dāng)用戶退出終端時(shí)進(jìn)程就會(huì)被殺掉。

二、使用PHP代碼來(lái)實(shí)現(xiàn)

 

 
  1. function daemonize() 
  2. $pid = pcntl_fork(); 
  3. if ($pid == -1) 
  4. die("fork(1) failed!/n"); 
  5. elseif ($pid > 0) 
  6. //讓由用戶啟動(dòng)的進(jìn)程退出 
  7. exit(0); 
  8.  
  9. //建立一個(gè)有別于終端的新session以脫離終端 
  10. posix_setsid(); 
  11.  
  12. $pid = pcntl_fork(); 
  13. if ($pid == -1) 
  14. die("fork(2) failed!/n"); 
  15. elseif ($pid > 0) 
  16. //父進(jìn)程退出, 剩下子進(jìn)程成為最終的獨(dú)立進(jìn)程 
  17. exit(0); 
  18.  
  19. daemonize(); 
  20. sleep(1000); 

用上面代碼即可實(shí)現(xiàn)守護(hù)進(jìn)程化,當(dāng)你的PHP程序需要轉(zhuǎn)為后臺(tái)運(yùn)行時(shí),只需要調(diào)用一次封裝好的函數(shù)daemonize()即可。

注:這里沒(méi)有實(shí)現(xiàn)標(biāo)準(zhǔn)輸入輸出的重定向。

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 漳平市| 呼图壁县| 绥滨县| 铁岭市| 泸溪县| 广汉市| 福泉市| 新余市| 连云港市| 高尔夫| 景德镇市| 柳州市| 新乐市| 兰西县| 南阳市| 柳州市| 紫阳县| 朝阳区| 曲麻莱县| 尖扎县| 西畴县| 德保县| 海安县| 靖安县| 东台市| 丰台区| 泸定县| 嘉兴市| 斗六市| 原阳县| 柞水县| 杭锦后旗| 西宁市| 泰兴市| 商水县| 深水埗区| 灵石县| 绥芬河市| 阿拉善左旗| 思南县| 南充市|