日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

php 中的信號處理操作實例詳解

瀏覽:187日期:2022-09-11 10:49:30

本文實例講述了php 中的信號處理操作。分享給大家供大家參考,具體如下:

首先我們需要了解幾個函數(shù)

pcntl_signal 安裝信號處理器,也就是當指定信號發(fā)生時,調用函數(shù)。pcntl_alarm 指定秒數(shù)后向進程發(fā)送SIGALRM信號。posix_getpid 返回當前進程idposix_kill 給指定進程發(fā)送信號

一些常用的信號說明

SIGHUP本信號在用戶終端連接(正常或非正常)結束時發(fā)出, 通常是在終端的控制進程結束時,通知同一session內的各個作業(yè), 這時它們與控制終端不再關聯(lián)。

SIGINT程序終止(interrupt)信號, 在用戶鍵入INTR字符(通常是Ctrl-C)時發(fā)出。

SIGQUIT和SIGINT類似,但由QUIT字符(通常是Ctrl-/)來控制;進程在因收到SIGQUIT退出時會產生core文件,在這個意義上類似于一個程序錯誤信號。

SIGKILL用來立即結束程序的運行。本信號不能被阻塞、處理和忽略。如果管理員發(fā)現(xiàn)某個進程終止不了,可嘗試發(fā)送這個信號。

SIGTERM程序結束(terminate)信號, 與SIGKILL不同的是該信號可以被阻塞和處理。通常用來要求程序自己正常退出,shell命令kill缺省產生這個信號。如果進程終止不了,我們才會嘗試SIGKILL。

SIGUSR1留給用戶使用

SIGUSR2留給用戶使用

SIGALRM時鐘定時信號, 計算的是實際的時間或時鐘時間。alarm函數(shù)使用該信號。

SIGCHLD子進程結束時, 父進程會收到這個信號。

例1:

<?phpdeclare(ticks = 1);//信號處理函數(shù)function sig_func() { echo 'child exit rn';}//設置信號處理器pcntl_signal(SIGCHLD, ’sig_func’);$pid = pcntl_fork();if($pid == -1) { die(’fork error’);} else if ($pid) { pcntl_wait($status);} else { echo 'child... rn'; exit;}

當子進程退出時,會向父進程發(fā)送SIGCHLD信號,我們通過設置信號處理器,成功的處理信號。

例2:

<?phpdeclare(ticks = 1);//信號處理函數(shù)function sig_func($signo) { switch($signo) { case SIGCHLD: { echo 'child SIGCHLD rn'; break; } case SIGTERM: { echo 'child SIGTERM rn'; break; } default: //處理所有其他信號 break; }}//設置信號處理器pcntl_signal(SIGCHLD, ’sig_func’);//設置信號處理器pcntl_signal(SIGTERM, ’sig_func’);$pid = pcntl_fork();if($pid == -1) { die(’fork error’);} else if ($pid) { pcntl_wait($status);} else { sleep(3); echo 'child rn'; sleep(3); posix_kill(getmypid(), SIGTERM); exit;}

父進程等待子進程的退出,子進程等待3秒后輸出child,再等待3秒后向自身發(fā)送結束程序信號。

例3:

<?phpdeclare(ticks = 1);//信號處理函數(shù)function sig_func($signo) { switch($signo) { case SIGCHLD: { echo 'child SIGCHLD rn'; break; } /*這里要把處理SIGTERM信號的代碼注釋掉 case SIGTERM: { echo 'child SIGTERM rn'; break; }*/ default: //處理所有其他信號 break; }}//設置信號處理器pcntl_signal(SIGCHLD, ’sig_func’);//設置信號處理器,也注釋掉//不然當父進程發(fā)向子進程發(fā)送SIGTERM信號時,子進程不會退出,還會繼續(xù)執(zhí)行//我們的信號處理函數(shù)把SIGTERM給忽略了//pcntl_signal(SIGTERM, ’sig_func’);$pid = pcntl_fork();if($pid == -1) { die(’fork error’);} else if ($pid) { sleep(30); posix_kill($pid, SIGTERM);} else { $cnt = 0; for(;;) { sleep(3); echo $cnt, ’-’; ++$cnt; } exit;}

父進程在等待30秒后,向子進程發(fā)送SIGTERM結束程序信號。如果我們設置了SIGTERM信號的處理器,并且在自定義信號處理器中并沒有殺死該進程,則該子進程會一直運行下去。

pcntl_signal()函數(shù)僅僅是注冊信號和它的處理方法,真正接收到信號并調用其處理方法的是pcntl_signal_dispatch()函數(shù)。

例4:

<?php//使用ticks需要PHP 4.3.0以上版本//declare(ticks = 1);function sig_func() { echo 'SIGALRM rn';}//設置信號處理器pcntl_signal(SIGALRM, ’sig_func’);pcntl_alarm(3);

通過函數(shù)pcntl_alarm()3秒后給進程發(fā)送SIGALRM信號,但信號處理函數(shù)并未調用。原因是我們注釋了declare(ticks = 1);這段代碼,而又沒有調用pcntl_signal_dispatch()函數(shù)。

declare(ticks = 1);表示每執(zhí)行一條低級指令,就檢查一次信號,如果檢測到注冊的信號,就調用其信號處理器。但是這種處理方式效率很低,建議在代碼循環(huán)中通過pcntl_signal_dispatch()來處理信號。

<?php//使用ticks需要PHP 4.3.0以上版本//declare(ticks = 1);function sig_func() { echo 'SIGALRM rn';}//設置信號處理器pcntl_signal(SIGALRM, ’sig_func’);pcntl_alarm(3);//因為3秒后pcntl_alarm函數(shù)才會給進程發(fā)送SIGALRM信號//所以我們通過sleep函數(shù)等待3秒后,調用pcntl_signal_dispatch()來處理信號sleep(3);pcntl_signal_dispatch();

pcntl_signal_dispatch()這個函數(shù)是PHP5.3以上才支持的,如果你的PHP版本大于5.3,建議使用這個方法調用信號處理器。5.3以下的版本需要在注冊信號之前加上:declare(ticks = 1);

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP進程與線程操作技巧總結》、《PHP網(wǎng)絡編程技巧總結》、《PHP基本語法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
另类专区亚洲| 美美哒免费高清在线观看视频一区二区| 日韩视频1区| 蜜桃av一区二区在线观看| 蜜桃一区二区三区在线| 日本不卡高清视频| 国产精品一区二区三区美女| 牛牛精品成人免费视频| 成人在线免费观看91| 91综合视频| 久久天堂成人| 国产精品日韩欧美一区| 日韩中文字幕| 国产精品久久久久久久久久妞妞| 国产乱码精品| 亚洲一区二区小说| 老牛影视精品| 日韩av片子| 丝袜美腿诱惑一区二区三区| 久久九九99| 免费日韩视频| 日韩综合一区二区| 国产精品高清一区二区| 精品国产麻豆| 久久蜜桃av| 综合激情婷婷| 国产欧美日本| 国产精品精品| 制服诱惑一区二区| 欧美啪啪一区| 国产精品主播| 高清在线一区| 91超碰国产精品| 亚洲乱码久久| 国产精品久一| 久久三级福利| 亚洲美女91| 精品亚洲精品| 日韩视频精品在线观看| 欧美日韩91| 成人看片网站| 亚洲欧美日本国产| 老司机精品在线| 欧美亚洲国产一区| 日韩超碰人人爽人人做人人添| 美女久久99| 午夜影院欧美| 国产精品第十页| 免费精品国产的网站免费观看| 日本不卡在线视频| 久久香蕉网站| 国产亚洲精品自拍| 精品一区二区三区的国产在线观看| 蜜桃tv一区二区三区| 91欧美精品| 99久久久久| 国产剧情一区二区在线观看| 久久亚洲精品中文字幕蜜潮电影| 日韩国产一二三区| 欧洲一级精品| 日韩一区精品| 亚洲va中文在线播放免费| 无码日韩精品一区二区免费| 日韩欧美在线中字| 日韩超碰人人爽人人做人人添| 99久久视频| 国产精品nxnn| 午夜一级在线看亚洲| 中文在线а√天堂| 欧美日韩va| 亚洲激情婷婷| 国产精品国产一区| 日本特黄久久久高潮| 欧美1区2区3区| 九九九精品视频| 丝袜美腿一区二区三区| 麻豆网站免费在线观看| 欧美日本三区| 亚洲尤物在线| 国产精品久久久久av电视剧| 国产欧美精品久久| 免费看欧美美女黄的网站| 亚洲精品国产嫩草在线观看| 国产精品天天看天天狠| 日韩精品一二三四| 久久精品导航| 国产一区二区三区四区五区| 奇米亚洲欧美| 人人精品人人爱| 欧美日韩国产传媒| 精品国产99| 欧美日韩精品一区二区三区视频| 久久福利毛片| 欧美特黄一区| 久久麻豆精品| 婷婷激情一区| 精品视频在线一区二区在线| 欧美片网站免费| 天海翼精品一区二区三区| 日韩一区二区免费看| 亚洲特级毛片| 久久精品免费一区二区三区| 亚洲欧洲美洲av| 精品视频在线你懂得| 老鸭窝一区二区久久精品| 亚洲一二三区视频| 亚洲尤物在线| 99视频在线精品国自产拍免费观看| 久久精品一区二区不卡| 亚洲综合电影| 一区二区精品伦理...| 成人在线视频区| 麻豆国产91在线播放| 国产乱论精品| 国产精品巨作av| 麻豆91精品视频| 久久久免费人体| 国产精品.xx视频.xxtv| 国产日韩欧美在线播放不卡| 少妇精品久久久| 日韩中文字幕91| 石原莉奈在线亚洲二区| 视频一区中文字幕国产| 蜜臀av国产精品久久久久| 视频一区二区三区中文字幕| 爽爽淫人综合网网站| 综合激情网站| 91亚洲无吗| 国产精品nxnn| 国产一区二区三区黄网站 | 欧美综合另类| 在线日韩中文| 蘑菇福利视频一区播放| 国产精品女主播一区二区三区| 亚洲少妇在线| 亚洲精品免费观看| 亚洲人成亚洲精品| 日韩av在线免费观看不卡| 欧美日本不卡高清| 老司机精品视频网| 理论片午夜视频在线观看| 日本在线精品| 国产精品88久久久久久| 亚洲一区不卡| 啪啪亚洲精品| 国产一区二区三区四区五区传媒| 日韩电影二区| 一区免费视频| 日本亚洲视频在线| 国产精品视频一区视频二区| 国产一区二区三区四区大秀| 久久在线免费| 亚洲视频国产精品| 国产亚洲精品美女久久| 久久亚洲资源中文字| 国产99久久| 日韩精品视频网站| 国产不卡一区| 国产毛片一区| 国产精品115| 在线成人动漫av| 亚洲九九精品| 国产成人免费| 久久精选视频| 免费观看在线综合| 国产精品一区二区三区四区在线观看 | 亚洲欧美日韩精品一区二区| 日韩高清三区| 中文字幕在线免费观看视频| 久久午夜视频| 麻豆国产91在线播放| 亚洲午夜黄色| 欧美三区不卡| 久久中文字幕二区| 中文不卡在线| 欧美亚洲一区二区三区| 在线亚洲人成| 婷婷精品在线| 日韩国产一区| 亚洲精品一二三**| 福利一区和二区| 热久久免费视频| 中文字幕高清在线播放| 欧美综合国产| 欧美韩日一区| 日韩一区二区三区在线看| 亚洲综合在线电影| 欧美亚洲免费| 欧美日韩国产亚洲一区| 美女高潮久久久| 亚洲精品va| 精品亚洲成人| 亚洲乱码久久| 日韩欧美字幕| 欧美日韩网址| 亚洲深爱激情| 欧美三区四区| 国产精品自拍区| 亚洲综合不卡| 欧美天堂视频|