pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

PHP守護(hù)進(jìn)程的兩種常見(jiàn)實(shí)現(xiàn)方式詳解

這篇文章主要介紹了PHP守護(hù)進(jìn)程的兩種常見(jiàn)實(shí)現(xiàn)方式,結(jié)合具體實(shí)例形式分析了php守護(hù)進(jìn)程的原理與相關(guān)實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了PHP守護(hù)進(jìn)程的兩種常見(jiàn)實(shí)現(xiàn)方式。分享給大家供大家參考,具體如下:

第一種方式,借助 nohup 和 &  配合使用。

在命令后面加上 & 符號(hào), 可以讓啟動(dòng)的進(jìn)程轉(zhuǎn)到后臺(tái)運(yùn)行,而不占用控制臺(tái),控制臺(tái)還可以再運(yùn)行其他命令,這里我使用一個(gè)while死循環(huán)來(lái)做演示,代碼如下

<?php
while(true){
    echo time().PHP_EOL;
    sleep(3);
}

用 & 方式來(lái)啟動(dòng)該進(jìn)程

[root@localhost php]# php deadloop.php &
[1] 3454
[root@localhost php]# ps aux | grep 3454
root   3454 0.0 0.8 284544 8452 pts/0  T  18:06  0:00 php deadloop.php
root   3456 0.0 0.0 103316  896 pts/0  S+  18:08  0:00 grep 3454
[1]+ Stopped         php deadloop.php
[root@localhost php]#

可以看到該進(jìn)程并未占用控制臺(tái),控制臺(tái)還可以運(yùn)行其他命令,這時(shí)我們還可以通過(guò) fg 命令讓進(jìn)程恢復(fù)到普通占用控制臺(tái)的模式。

[root@localhost php]# fg
php deadloop.php
1470996682
1470996685
1470996688
1470996691

以上就是關(guān)于 & 命令簡(jiǎn)單介紹

下面再來(lái)看另一個(gè)命令 nohup

在命令之前加上 nohup ,啟動(dòng)的進(jìn)程將會(huì)忽略linux的掛起信號(hào) (SIGHUP),那什么情況下會(huì)觸發(fā)linux下SIGHUP信號(hào)呢,以下內(nèi)容摘自百度百科:

SIGHUP會(huì)在以下3種情況下被發(fā)送給相應(yīng)的進(jìn)程:

1、終端關(guān)閉時(shí),該信號(hào)被發(fā)送到session首進(jìn)程以及作為job提交的進(jìn)程(即用 & 符號(hào)提交的進(jìn)程)
2、session首進(jìn)程退出時(shí),該信號(hào)被發(fā)送到該session中的前臺(tái)進(jìn)程組中的每一個(gè)進(jìn)程
3、若父進(jìn)程退出導(dǎo)致進(jìn)程組成為孤兒進(jìn)程組,且該進(jìn)程組中有進(jìn)程處于停止?fàn)顟B(tài)(收到SIGSTOP或SIGTSTP信號(hào)),該信號(hào)會(huì)被發(fā)送到該進(jìn)程組中的每一個(gè)進(jìn)程。

結(jié)合 1和2 我們知道,不管是否以 & (job方式)啟動(dòng)的進(jìn)程,關(guān)閉終端時(shí)都會(huì)收到  SIGHUP 信號(hào) ,那么進(jìn)程收到 SIGHUP 信號(hào)會(huì)如何處理呢,看同樣是摘自百度百科的一句話

系統(tǒng)對(duì)SIGHUP信號(hào)的默認(rèn)處理是終止收到該信號(hào)的進(jìn)程。所以若程序中沒(méi)有捕捉該信號(hào),當(dāng)收到該信號(hào)時(shí),進(jìn)程就會(huì)退出。

也就是說(shuō)關(guān)閉終端進(jìn)程會(huì)收到SIGHUP信號(hào),而該信號(hào)的默認(rèn)處理方式就是結(jié)束掉該進(jìn)程,當(dāng)然 我們也可以自己處理該信號(hào),或者忽略它,同樣是上述循環(huán)的例子,我們稍加改進(jìn)

<?php
declare(ticks = 1);
pcntl_signal(SIGHUP, function(){
    // 這地方處理信號(hào)的方式我們只是簡(jiǎn)單的寫(xiě)入一句日志到文件中
    file_put_contents('logs.txt', 'pid : ' . posix_getpid() . ' receive SIGHUP 信號(hào)' . PHP_EOL);
});
while(true){
    echo time().PHP_EOL;
    sleep(3);
}

我們大可不必這么麻煩,只需要使用linux提供給我們的nohup命令,但我們使用nohup啟動(dòng)進(jìn)程時(shí),關(guān)閉終端,進(jìn)程會(huì)忽略SIGHUP信號(hào),也就不會(huì)退出了,首先去掉剛才的信號(hào)處理代碼。然后nohup 運(yùn)行。

[root@localhost php]# nohup php deadloop.php

nohup: 忽略輸入并把輸出追加到"nohup.out"

并且nohup默認(rèn)會(huì)把程序的輸出重定向到當(dāng)前目錄下的nohup.out文件,如果沒(méi)有可寫(xiě)權(quán)限,則寫(xiě)入 $homepath/nohup.out

[root@localhost php]# ls
cmd.sh deadloop.php getPhoto.php nohup.out pics
[root@localhost php]# tail -f nohup.out
1470999772
1470999775
1470999778
1470999781
1470999784
1470999787
1470999790
1470999793
1470999796
1470999799
1470999802

此時(shí) 關(guān)閉終端,進(jìn)程不會(huì)結(jié)束,而是變成了孤兒進(jìn)程(ppid=1),因?yàn)閯?chuàng)建它的父進(jìn)程退出了。

[root@localhost ~]# ps -ef | grep 3554
root   3554 3497 0 19:09 pts/0  00:00:00 php deadloop.php
root   3575 3557 0 19:10 pts/1  00:00:00 grep 3554
[root@localhost ~]# ps -ef | grep 3554
root   3554   1 0 19:09 ?    00:00:00 php deadloop.php
root   3577 3557 0 19:10 pts/1  00:00:00 grep 3554
[root@localhost ~]#

結(jié)論: 所以當(dāng)我們組合 nohup 和 & 兩種方式時(shí),啟動(dòng)的進(jìn)程不會(huì)占用控制臺(tái),也不依賴控制臺(tái),控制臺(tái)關(guān)閉之后進(jìn)程被1號(hào)進(jìn)程收養(yǎng),成為孤兒進(jìn)程,這就和守護(hù)進(jìn)程的機(jī)制非常類(lèi)似了。

[root@localhost php]# nohup php deadloop.php >logs.txt 2>error.txt &
[1] 3612
[root@localhost php]# ps -ef |grep 3612
root   3612 3557 0 19:18 pts/1  00:00:00 php deadloop.php
root   3617 3557 0 19:19 pts/1  00:00:00 grep 3612
[root@localhost php]#

其中 >logs.txt 重定向標(biāo)準(zhǔn)輸出,2>error.txt 重定向標(biāo)準(zhǔn)錯(cuò)誤輸出。

以上就是關(guān)于第一種實(shí)現(xiàn)方式的介紹。

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過(guò)測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了PHP定義字符串的四種方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
下面小編就為大家分享一篇php 替換文章中的圖片路徑,下載圖片到本地服務(wù)器的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
下面小編就為大家分享一篇PHP給源代碼加密的幾種方法匯總(推薦),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
下面小編就為大家分享一篇php打開(kāi)本地exe程序,js打開(kāi)本地exe應(yīng)用程序,并傳遞相關(guān)參數(shù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
這篇文章主要介紹了PHP類(lèi)的反射來(lái)實(shí)現(xiàn)依賴注入過(guò)程以及相關(guān)知識(shí)點(diǎn)分享,對(duì)此有興趣的朋友跟著小編學(xué)習(xí)下吧。
php遍歷一個(gè)文件夾內(nèi)的所有文件和文件夾,并刪除所有文件夾和子文件夾下的所有文件的代碼,通過(guò)遞歸方式實(shí)現(xiàn)達(dá)到清空一個(gè)目錄的效果。本文給大家分享實(shí)例代碼,需要的朋友參考
主站蜘蛛池模板: 示波器高压差分探头-国产电流探头厂家-南京桑润斯电子科技有限公司 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 闪电优家-卫生间防水补漏_酒店漏水渗水维修_防水堵漏公司 | 旋转滴界面张力仪(张力测定仪器)-百科| 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 减速机电机一体机_带电机减速器一套_德国BOSERL电动机与减速箱生产厂家 | 煤机配件厂家_刮板机配件_链轮轴组_河南双志机械设备有限公司 | 地图标注|微信高德百度地图标注|地图标记-做地图[ZuoMap.com] | 生物风-销售载体,基因,质粒,ATCC细胞,ATCC菌株等,欢迎购买-百风生物 | 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 自动钻孔机-全自动数控钻孔机生产厂家-多米(广东)智能装备有限公司 | 耐破强度测试仪-纸箱破裂强度试验机-济南三泉中石单品站 | 流量卡中心-流量卡套餐查询系统_移动电信联通流量卡套餐大全 | RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 全自动贴标机-套标机-工业热风机-不干胶贴标机-上海厚冉机械 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 权威废金属|废塑料|废纸|废铜|废钢价格|再生资源回收行情报价中心-中废网 | 卷筒电缆-拖链电缆-特种柔性扁平电缆定制厂家「上海缆胜」 | 高温链条油|高温润滑脂|轴承润滑脂|机器人保养用油|干膜润滑剂-东莞卓越化学 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 电动手术床,医用护理床,led手术无影灯-曲阜明辉医疗设备有限公司 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 北京普辉律师事务所官网_北京律师24小时免费咨询|法律咨询 | 中宏网-今日新闻-财经新闻| 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 中式装修设计_全屋定制家具_实木仿古门窗花格厂家-喜迎门 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | 微信聊天记录恢复_手机短信删除怎么恢复_通讯录恢复软件下载-快易数据恢复 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 成都竞价托管_抖音代运营_网站建设_成都SEM外包-成都智网创联网络科技有限公司 |