PHP程式守護程式化執行個體詳解

小云云
發布: 2023-03-21 21:52:02
原創
1151 人瀏覽過

一般Server程式都是運行在系統後台,這與普通的互動式命令列程式有很大的差別。 glibc裡有一個函數daemon。呼叫此函數,就可使目前程序脫離終端變成一個守護程序,具體內容請參考man daemon。 PHP中暫時沒有此函數,當然如果你有興趣的話,可以寫一個PHP的擴充函數來實現。

PHP指令列程式實作守護程序化有2種方法:

一 、使用nohup

nohup php myprog.php > log.txt &
登入後複製

這裡就實作了守護程式化。

單獨執行 php myprog.php,按下ctrl+c時就會中斷程式執行,會kill目前行程以及子程序。

php myprog.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程式需要轉為背景執行時,只需要呼叫一次封裝好的函數daemonize()即可。
註:這裡沒有實現標準輸入輸出的重定向。

相關推薦:

PHP程式守護程式化

#

以上是PHP程式守護程式化執行個體詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板