欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP程序守護進程化實現(xiàn)方法詳解

 更新時間:2020年07月16日 15:22:36   作者:網(wǎng)絡蟲  
這篇文章主要介紹了PHP程序守護進程化實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一般Server程序都是運行在系統(tǒng)后臺,這與普通的交互式命令行程序有很大的區(qū)別。glibc里有一個函數(shù)daemon。調(diào)用此函數(shù),就可使當前進程脫離終端變成一個守護進程,具體內(nèi)容參見man daemon。PHP中暫時沒有此函數(shù),當然如果你有興趣的話,可以寫一個PHP的擴展函數(shù)來實現(xiàn)。

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

一 、使用nohup

nohup php myprog.php > log.txt &

這里就實現(xiàn)了守護進程化。

單獨執(zhí)行 php myprog.php,當按下ctrl+c時就會中斷程序執(zhí)行,會kill當前進程以及子進程。

php myprog.php &,這樣執(zhí)行程序雖然也是轉(zhuǎn)為后臺運行,實際上是依賴終端的,當用戶退出終端時進程就會被殺掉。

二、使用PHP代碼來實現(xiàn)

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);

用上面代碼即可實現(xiàn)守護進程化,當你的PHP程序需要轉(zhuǎn)為后臺運行時,只需要調(diào)用一次封裝好的函數(shù)daemonize()即可。
注:這里沒有實現(xiàn)標準輸入輸出的重定向。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論