摘要:調(diào)用此函數(shù),就可使當(dāng)前進(jìn)程脫離終端變成一個(gè)守護(hù)進(jìn)程,具體內(nèi)容參見(jiàn)。命令行程序?qū)崿F(xiàn)守護(hù)進(jìn)程化有種方法一使用這里就實(shí)現(xiàn)了守護(hù)進(jìn)程化。多帶帶執(zhí)行,當(dāng)按下時(shí)就會(huì)中斷程序執(zhí)行,會(huì)當(dāng)前進(jìn)程以及子進(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)然如果你有興趣的話,可以寫一個(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)程化。
多帶帶執(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! "); } elseif ($pid > 0) { //讓由用戶啟動(dòng)的進(jìn)程退出 exit(0); } //建立一個(gè)有別于終端的新session以脫離終端 posix_setsid(); $pid = pcntl_fork(); if ($pid == -1) { die("fork(2) failed! "); } 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()即可。
注:這里沒(méi)有實(shí)現(xiàn)標(biāo)準(zhǔn)輸入輸出的重定向。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31921.html
摘要:做了一次分享,主題使用搭建開(kāi)發(fā)環(huán)境,簡(jiǎn)單介紹了一下的概念,演示了使用構(gòu)建全套環(huán)境。應(yīng)場(chǎng)景通常于如下場(chǎng)景應(yīng)的動(dòng)化打包和發(fā)布動(dòng)化測(cè)試和持續(xù)集成發(fā)布在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫(kù)或其他的后臺(tái)應(yīng)從頭編譯或者擴(kuò)展現(xiàn)有的或平臺(tái)來(lái)搭建的環(huán)境。 做了一次分享,主題《使用 Docker 搭建開(kāi)發(fā)環(huán)境》,簡(jiǎn)單介紹了一下 Docker 的概念,演示了使用 Docker-compose 構(gòu)建全套 PHP 環(huán)境...
摘要:做了一次分享,主題使用搭建開(kāi)發(fā)環(huán)境,簡(jiǎn)單介紹了一下的概念,演示了使用構(gòu)建全套環(huán)境。應(yīng)場(chǎng)景通常于如下場(chǎng)景應(yīng)的動(dòng)化打包和發(fā)布動(dòng)化測(cè)試和持續(xù)集成發(fā)布在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫(kù)或其他的后臺(tái)應(yīng)從頭編譯或者擴(kuò)展現(xiàn)有的或平臺(tái)來(lái)搭建的環(huán)境。 做了一次分享,主題《使用 Docker 搭建開(kāi)發(fā)環(huán)境》,簡(jiǎn)單介紹了一下 Docker 的概念,演示了使用 Docker-compose 構(gòu)建全套 PHP 環(huán)境...
摘要:是一個(gè)基于擴(kuò)展實(shí)現(xiàn)的輕量級(jí)高性能的常駐內(nèi)存型的和應(yīng)用服務(wù)框架高度封裝了,,服務(wù)器,以及基于實(shí)現(xiàn)可擴(kuò)展的服務(wù),同時(shí)支持包方式安裝部署項(xiàng)目?;趯?shí)用,抽象事件處理類,實(shí)現(xiàn)與底層的回調(diào)的解耦,支持同步異步調(diào)用,內(nèi)置等常用組件等。 swoolefy swoolefy是一個(gè)基于swoole擴(kuò)展實(shí)現(xiàn)的輕量級(jí)高性能的常駐內(nèi)存型的API和Web應(yīng)用服務(wù)框架,高度封裝了http,websocket,ud...
摘要:原文地址音標(biāo)中文含義為守護(hù)神或精靈的意思其實(shí)它還有個(gè)意思守護(hù)進(jìn)程守護(hù)進(jìn)程簡(jiǎn)單地說(shuō)就是可以脫離終端而在后臺(tái)運(yùn)行的進(jìn)程這在中是非常常見(jiàn)的一種進(jìn)程比如或者等服務(wù)啟動(dòng)后就會(huì)以守護(hù)進(jìn)程的方式進(jìn)駐在內(nèi)存中以為例假如我有個(gè)耗時(shí)間的任務(wù)需要跑在后臺(tái)將所有 [原文地址:https://blog.ti-node.com/blog...] daemon 音標(biāo) : [di:m?n] , 中文含義為守護(hù)神或精靈...
閱讀 872·2021-11-19 11:29
閱讀 3363·2021-09-26 10:15
閱讀 2874·2021-09-22 10:02
閱讀 2447·2021-09-02 15:15
閱讀 1982·2019-08-30 15:56
閱讀 2424·2019-08-30 15:54
閱讀 2929·2019-08-29 16:59
閱讀 646·2019-08-29 16:20