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í)例代碼,需要的朋友參考
主站蜘蛛池模板: 手板_手板模型制作_cnc手板加工厂-东莞天泓 | 安徽千住锡膏_安徽阿尔法锡膏锡条_安徽唯特偶锡膏_卡夫特胶水-芜湖荣亮电子科技有限公司 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | 【黄页88网】-B2B电子商务平台,b2b平台免费发布信息网 | 包塑丝_高铁绑丝_地暖绑丝_涂塑丝_塑料皮铁丝_河北创筹金属丝网制品有限公司 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 环压强度试验机-拉链拉力试验机-上海倾技仪器仪表科技有限公司 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 米顿罗计量泵(科普)——韬铭机械| 泉州陶瓷pc砖_园林景观砖厂家_石英砖地铺石价格 _福建暴风石英砖 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 蜜蜂职场文库_职场求职面试实用的范文资料大全 | 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | SRRC认证_电磁兼容_EMC测试整改_FCC认证_SDOC认证-深圳市环测威检测技术有限公司 | 长沙印刷厂-包装印刷-画册印刷厂家-湖南省日大彩色印务有限公司 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 防水套管厂家_刚性防水套管_柔性防水套管_不锈钢防水套管-郑州中泰管道 | 电解抛光加工_不锈钢电解抛光_常州安谱金属制品有限公司 | 螺旋绞龙叶片,螺旋输送机厂家,山东螺旋输送机-淄博长江机械制造有限公司 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 实战IT培训机构_IT培训班选大学生IT技术培训中心_中公优就业 | 带式过滤机厂家_价格_型号规格参数-江西核威环保科技有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 走心机厂家,数控走心机-台州博城智能科技有限公司 | 高温链条油|高温润滑脂|轴承润滑脂|机器人保养用油|干膜润滑剂-东莞卓越化学 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 99文库_实习生实用的范文资料文库站 | 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | 非甲烷总烃分析仪|环控百科| elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 上海办公室装修,办公楼装修设计,办公空间设计,企业展厅设计_写艺装饰公司 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 全自动包衣机-无菌分装隔离器-浙江迦南科技股份有限公司 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | C形臂_动态平板DR_动态平板胃肠机生产厂家制造商-普爱医疗 | 头条搜索极速版下载安装免费新版,头条搜索极速版邀请码怎么填写? - 欧远全 | 广东机电安装工程_中央空调工程_东莞装饰装修-广东粤标建设有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 |