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

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

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

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

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

首先我們需要了解幾個函數

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

一些常用的信號說明

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

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

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

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

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

SIGUSR1留給用戶使用

SIGUSR2留給用戶使用

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

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

例1:

<?phpdeclare(ticks = 1);//信號處理函數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;}

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

例2:

<?phpdeclare(ticks = 1);//信號處理函數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秒后向自身發送結束程序信號。

例3:

<?phpdeclare(ticks = 1);//信號處理函數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’);//設置信號處理器,也注釋掉//不然當父進程發向子進程發送SIGTERM信號時,子進程不會退出,還會繼續執行//我們的信號處理函數把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秒后,向子進程發送SIGTERM結束程序信號。如果我們設置了SIGTERM信號的處理器,并且在自定義信號處理器中并沒有殺死該進程,則該子進程會一直運行下去。

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

例4:

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

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

declare(ticks = 1);表示每執行一條低級指令,就檢查一次信號,如果檢測到注冊的信號,就調用其信號處理器。但是這種處理方式效率很低,建議在代碼循環中通過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函數才會給進程發送SIGALRM信號//所以我們通過sleep函數等待3秒后,調用pcntl_signal_dispatch()來處理信號sleep(3);pcntl_signal_dispatch();

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

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

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

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
黄色在线网站噜噜噜| 久久精品97| 色在线视频观看| 精品国产亚洲日本| 在线看片福利| 欧美综合另类| 少妇精品久久久一区二区| 日韩和欧美的一区| 国产精品一区二区中文字幕| 伊人久久一区| 日本欧美一区| 精品精品国产三级a∨在线| 日韩久久电影| 丝袜亚洲另类欧美| 国产一区 二区| 日韩一区亚洲二区| 亚洲欧洲午夜| 国产精品啊v在线| 色天使综合视频| 日韩视频中文| 国产精品色婷婷在线观看| 日韩免费看片| 中文视频一区| 国产不卡精品在线| 国产综合色产| 91成人精品观看| 日韩免费视频| 日韩欧美激情电影| 日韩国产欧美一区二区| 最新国产精品久久久| 久久精品国产精品亚洲毛片| 1000部精品久久久久久久久| 色狠狠一区二区三区| 日韩av二区| 亚洲另类黄色| 日韩不卡免费高清视频| 日韩精品视频一区二区三区| 亚洲黄色中文字幕| 三级久久三级久久久| 久久字幕精品一区| 亚洲一区激情| 日韩1区在线| 欧美日韩18| 国内精品福利| 久久这里只有精品一区二区| 伊人影院久久| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 日本va欧美va瓶| 欧美二三四区| 日韩高清电影免费| 欧美一区二区性| 精品一区二区三区中文字幕在线| 最新亚洲激情| 亚洲欧洲美洲av| 欧美性www| 99热精品在线观看| a天堂资源在线| 亚洲精品激情| 亚洲精品一区三区三区在线观看| 日本综合精品一区| 国产欧美日韩视频在线| 羞羞答答国产精品www一本| 中文无码日韩欧| 国产精品一区二区av交换 | 国产精品免费看| 福利一区二区| 国产精品一区二区av日韩在线| 亚洲精品123区| 亚洲va中文在线播放免费| 欧美激情久久久久久久久久久| 亚洲ab电影| 亚洲男女av一区二区| 麻豆91小视频| 国产精品一区二区三区美女 | 国产精品av久久久久久麻豆网| 欧美国产专区| 国产伦精品一区二区三区千人斩| 中文字幕乱码亚洲无线精品一区| 最新亚洲一区| 五月精品视频| 亚洲精品国产偷自在线观看| 麻豆理论在线观看| 精品久久美女| 高清av一区| 福利一区二区三区视频在线观看| 欧美日一区二区在线观看| 性色一区二区| 久久午夜影视| 日韩制服丝袜av| 秋霞影视一区二区三区| 国产a亚洲精品| 成人在线免费观看网站| 久久国产精品美女| 国产精品大片| 精品伊人久久| 丁香六月综合| a国产在线视频| 精品国产免费人成网站| 日韩av专区| av在线日韩| 欧美1区免费| 免播放器亚洲一区| 日韩一区二区三区在线看| 欧美一级全黄| 首页国产精品| 极品日韩av| 丝袜脚交一区二区| 欧美视频久久| 欧美韩日一区| 九九综合九九| 影音先锋久久精品| 日韩av中文字幕一区二区| 97久久亚洲| 美腿丝袜亚洲一区| 亚洲精品**中文毛片| 在线成人动漫av| 樱桃成人精品视频在线播放| 日韩中文字幕区一区有砖一区| 日韩高清不卡在线| 欧美激情福利| 日本不卡免费高清视频在线| 美女网站一区| 视频一区中文字幕精品| 国产乱论精品| 日韩在线二区| 日本大胆欧美人术艺术动态| 日韩中文一区二区| 国产日韩高清一区二区三区在线| 国产精品tv| 999国产精品视频| 婷婷亚洲成人| 激情久久99| 日韩一区二区免费看| 99精品在线观看| 国产乱码精品一区二区三区亚洲人 | 欧美国产亚洲精品| 日本久久成人网| 免费在线观看视频一区| 欧美专区一区| 日韩综合精品| 少妇精品久久久| 日韩免费在线| 91综合久久爱com| 久久91导航| 青青草国产精品亚洲专区无| 天堂√8在线中文| 日本不卡在线视频| 韩国精品主播一区二区在线观看| 日本亚洲最大的色成网站www | 夜夜嗨一区二区三区| 国产伦一区二区三区| 久久九九电影| 国产日韩欧美中文在线| 欧美午夜精品一区二区三区电影| 日韩av不卡一区二区| 国户精品久久久久久久久久久不卡 | 四季av一区二区凹凸精品| 亚洲欧美久久| jizzjizz中国精品麻豆| 日韩精品成人| 亚洲精品888| 国产成人精品三级高清久久91| 亚洲一区二区三区四区五区午夜| 欧美aaaaaa午夜精品| 国产精品腿扒开做爽爽爽挤奶网站| 久久在线91| 日韩精品三区四区| 宅男噜噜噜66国产日韩在线观看| 国产a久久精品一区二区三区| 亚洲精选久久| 亚洲国产一区二区三区在线播放| 久久中文字幕一区二区| 日韩精品第二页| 国产亚洲永久域名| 午夜久久av| 免费国产自线拍一欧美视频| 精品视频网站| 国产欧美日韩影院| 日韩在线一二三区| 欧美69视频| 不卡福利视频| 麻豆高清免费国产一区| 欧美精品三级在线| 在线精品亚洲| 91超碰国产精品| 国产视频一区二| 日韩精品免费一区二区三区| 日韩av专区| 久久女人天堂| 国产精品三级| 国产人成精品一区二区三| 香蕉成人久久| 日韩视频在线一区二区三区| 精品伊人久久久| 麻豆精品久久| 国产精品啊啊啊| 麻豆中文一区二区| 国产精品porn| 欧美激情福利| 精品视频一区二区三区在线观看|