婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > php 中的信號(hào)處理操作實(shí)例詳解

php 中的信號(hào)處理操作實(shí)例詳解

熱門標(biāo)簽:辦理400電話哪家好點(diǎn) 重慶外呼電銷系統(tǒng)多少錢 濟(jì)源百應(yīng)電銷機(jī)器人聯(lián)系方式 咸陽(yáng)電銷 南京3D地圖標(biāo)注 嘟嘟云外呼系統(tǒng) 南寧電話外呼系統(tǒng)線路 正規(guī)電銷機(jī)器人系統(tǒng) 邢臺(tái)400電話辦理

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

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

pcntl_signal   安裝信號(hào)處理器,也就是當(dāng)指定信號(hào)發(fā)生時(shí),調(diào)用函數(shù)。
pcntl_alarm   指定秒數(shù)后向進(jìn)程發(fā)送SIGALRM信號(hào)。
posix_getpid 返回當(dāng)前進(jìn)程id
posix_kill       給指定進(jìn)程發(fā)送信號(hào)

一些常用的信號(hào)說明

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

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

SIGQUIT
和SIGINT類似,但由QUIT字符(通常是Ctrl-/)來控制;進(jìn)程在因收到SIGQUIT退出時(shí)會(huì)產(chǎn)生core文件,
在這個(gè)意義上類似于一個(gè)程序錯(cuò)誤信號(hào)。

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

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

SIGUSR1
留給用戶使用

SIGUSR2
留給用戶使用

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

SIGCHLD
子進(jìn)程結(jié)束時(shí), 父進(jìn)程會(huì)收到這個(gè)信號(hào)。

例1:

?php
declare(ticks = 1);
//信號(hào)處理函數(shù)
function sig_func() {
  echo "child exit \r\n";
}
//設(shè)置信號(hào)處理器
pcntl_signal(SIGCHLD, 'sig_func');
$pid = pcntl_fork();
if($pid == -1) {
  die('fork error');
} else if ($pid) {
  pcntl_wait($status);
} else {
  echo "child... \r\n";
  exit;
}

當(dāng)子進(jìn)程退出時(shí),會(huì)向父進(jìn)程發(fā)送SIGCHLD信號(hào),我們通過設(shè)置信號(hào)處理器,成功的處理信號(hào)。

例2:

?php
declare(ticks = 1);
//信號(hào)處理函數(shù)
function sig_func($signo) {
  switch($signo) {
    case SIGCHLD: {
      echo "child SIGCHLD \r\n";
      break;
    }
    case SIGTERM: {
      echo "child SIGTERM \r\n";
      break;
    }
    default:
      //處理所有其他信號(hào)
      break;
  }
}
//設(shè)置信號(hào)處理器
pcntl_signal(SIGCHLD, 'sig_func');
//設(shè)置信號(hào)處理器
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 \r\n";
  sleep(3);
  posix_kill(getmypid(), SIGTERM);
  exit;
}

父進(jìn)程等待子進(jìn)程的退出,子進(jìn)程等待3秒后輸出child,再等待3秒后向自身發(fā)送結(jié)束程序信號(hào)。

例3:

?php
declare(ticks = 1);
//信號(hào)處理函數(shù)
function sig_func($signo) {
  switch($signo) {
    case SIGCHLD: {
      echo "child SIGCHLD \r\n";
      break;
    }
    /*這里要把處理SIGTERM信號(hào)的代碼注釋掉
    case SIGTERM: {
      echo "child SIGTERM \r\n";
      break;
    }*/
    default:
      //處理所有其他信號(hào)
      break;
  }
}
//設(shè)置信號(hào)處理器
pcntl_signal(SIGCHLD, 'sig_func');
//設(shè)置信號(hào)處理器,也注釋掉
//不然當(dāng)父進(jìn)程發(fā)向子進(jìn)程發(fā)送SIGTERM信號(hào)時(shí),子進(jìn)程不會(huì)退出,還會(huì)繼續(xù)執(zhí)行
//我們的信號(hào)處理函數(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;
}

父進(jìn)程在等待30秒后,向子進(jìn)程發(fā)送SIGTERM結(jié)束程序信號(hào)。如果我們?cè)O(shè)置了SIGTERM信號(hào)的處理器,并且在自定義信號(hào)處理器中并沒有殺死該進(jìn)程,則該子進(jìn)程會(huì)一直運(yùn)行下去。

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

例4:

?php
//使用ticks需要PHP 4.3.0以上版本
//declare(ticks = 1);
function sig_func() {
  echo "SIGALRM \r\n";
}
//設(shè)置信號(hào)處理器
pcntl_signal(SIGALRM, 'sig_func');
pcntl_alarm(3);

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

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

?php
//使用ticks需要PHP 4.3.0以上版本
//declare(ticks = 1);
function sig_func() {
  echo "SIGALRM \r\n";
}
//設(shè)置信號(hào)處理器
pcntl_signal(SIGALRM, 'sig_func');
pcntl_alarm(3);
//因?yàn)?秒后pcntl_alarm函數(shù)才會(huì)給進(jìn)程發(fā)送SIGALRM信號(hào)
//所以我們通過sleep函數(shù)等待3秒后,調(diào)用pcntl_signal_dispatch()來處理信號(hào)
sleep(3);
pcntl_signal_dispatch();

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

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

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • python多線程下信號(hào)處理程序示例
  • PHP信號(hào)處理機(jī)制的操作代碼講解
  • 對(duì)Python信號(hào)處理模塊signal詳解
  • Golang信號(hào)處理及如何實(shí)現(xiàn)進(jìn)程的優(yōu)雅退出詳解
  • Perl信號(hào)處理學(xué)習(xí)簡(jiǎn)單小結(jié)
  • 詳細(xì)分析C++ 信號(hào)處理

標(biāo)簽:河南 唐山 平頂山 武漢 隴南 通遼 黃山 南通

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php 中的信號(hào)處理操作實(shí)例詳解》,本文關(guān)鍵詞  php,中的,信號(hào)處理,操作,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php 中的信號(hào)處理操作實(shí)例詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于php 中的信號(hào)處理操作實(shí)例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲一区视频在线| 国产精品麻豆网站| 欧美成人一区二区| 天天综合网天天综合色| 91色综合久久久久婷婷| 国产欧美日韩三区| 国产激情91久久精品导航| 精品国精品自拍自在线| 韩国av一区二区三区在线观看| 国产欧美精品区一区二区三区 | 中文字幕一区三区| 91丨porny丨在线| 亚洲一区二区欧美日韩| 欧美男人的天堂一二区| 奇米精品一区二区三区四区| 欧美精品一区二区久久婷婷| 国产成人丝袜美腿| 亚洲四区在线观看| 制服丝袜成人动漫| 国产成人久久精品77777最新版本| 国产精品美女久久久久av爽李琼| 色素色在线综合| 蜜臀a∨国产成人精品| 国产精品少妇自拍| 91精品婷婷国产综合久久性色| 国产成人亚洲精品青草天美| 亚洲国产中文字幕在线视频综合| 日韩免费看的电影| 91麻豆swag| 国产九九视频一区二区三区| 亚洲一区免费在线观看| 久久精品亚洲精品国产欧美 | 日韩国产欧美一区二区三区| 久久男人中文字幕资源站| jlzzjlzz亚洲女人18| 美国av一区二区| 亚洲欧美日韩电影| 久久亚洲捆绑美女| 欧美三级资源在线| 成人一区二区视频| 久久99热国产| 亚洲第一狼人社区| 国产精品国产三级国产aⅴ中文| 制服丝袜一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品影视在线| 日本欧美一区二区三区乱码| 亚洲欧美另类小说| 国产亚洲精品资源在线26u| 欧美高清性hdvideosex| 91蜜桃在线观看| 色婷婷综合久久久中文字幕| 亚洲国产精品视频| 国产综合成人久久大片91| 久久免费美女视频| 欧美顶级少妇做爰| 精品视频1区2区3区| 欧美色中文字幕| 欧美日韩大陆一区二区| 精品视频免费看| 欧美麻豆精品久久久久久| 欧美日韩国产天堂| 欧美大胆一级视频| 国产精品久久久久婷婷| 亚洲色图欧洲色图| 国产精品久久久久久久午夜片| 亚洲综合久久久久| 美女精品自拍一二三四| 国产精品18久久久久久久久| 国产成人免费视频| 国产乱人伦偷精品视频不卡| 精品视频免费在线| 国产欧美日韩精品一区| 日韩精品一区第一页| 国产在线播放一区三区四| 国产白丝网站精品污在线入口| 欧美三级视频在线播放| 欧美一区二区人人喊爽| 中日韩免费视频中文字幕| 成人欧美一区二区三区小说| 日产国产高清一区二区三区| 韩国v欧美v日本v亚洲v| 欧美成人官网二区| 亚洲精品va在线观看| 成人18视频在线播放| 国产精品久久午夜夜伦鲁鲁| 亚洲日本在线天堂| 欧美优质美女网站| 亚洲午夜一二三区视频| 色噜噜狠狠色综合中国| 亚洲欧美一区二区在线观看| 成人h版在线观看| 亚洲欧美日韩人成在线播放| 国产一区激情在线| 欧美zozozo| 麻豆精品视频在线观看视频| 欧美日韩一级片在线观看| 亚洲亚洲精品在线观看| 欧美亚洲禁片免费| 一区二区三区毛片| 在线播放亚洲一区| 成人国产精品免费观看动漫| 制服.丝袜.亚洲.另类.中文| 麻豆视频一区二区| 欧美一卡2卡3卡4卡| 久久精品噜噜噜成人88aⅴ| 欧美激情综合五月色丁香| 99久久99久久久精品齐齐| 国产成人精品免费看| 一区二区三区四区中文字幕| 精品国产制服丝袜高跟| 东方欧美亚洲色图在线| 亚洲成av人片在线| 国产视频在线观看一区二区三区 | 欧美一区二区三区不卡| 韩国中文字幕2020精品| 久久国产精品第一页| 一区二区三区欧美激情| 国产日韩一级二级三级| 7777精品伊人久久久大香线蕉经典版下载 | 久久综合中文字幕| 在线观看亚洲专区| www.成人在线| 91片黄在线观看| 91视频免费播放| 色一区在线观看| 国产美女视频一区| 成人国产精品视频| 91蜜桃传媒精品久久久一区二区| 成人综合在线视频| 91亚洲国产成人精品一区二三| 97精品久久久午夜一区二区三区| 日本在线观看不卡视频| 视频一区二区欧美| 五月天一区二区三区| 日韩综合小视频| 日韩国产欧美在线视频| 蜜桃一区二区三区在线观看| 亚洲国产欧美在线人成| 蜜桃视频在线一区| 色悠久久久久综合欧美99| 91久久香蕉国产日韩欧美9色| 日韩一二三四区| 国产精品免费免费| 麻豆一区二区三| 欧美日韩视频第一区| 国产午夜精品一区二区三区嫩草 | 欧美天堂亚洲电影院在线播放| 欧美日韩一区高清| 中文字幕视频一区二区三区久| 天堂成人免费av电影一区| 国产麻豆一精品一av一免费 | 国产成人综合亚洲网站| 在线免费观看成人短视频| 久久综合久久鬼色| 另类综合日韩欧美亚洲| 欧美午夜理伦三级在线观看| 久久免费的精品国产v∧| 日日夜夜一区二区| 91久久精品国产91性色tv| 最新热久久免费视频| 五月综合激情婷婷六月色窝| 欧美亚洲动漫制服丝袜| 夜夜操天天操亚洲| 91丝袜美腿高跟国产极品老师 | 日韩av电影天堂| 在线欧美日韩国产| 亚洲裸体在线观看| 欧美在线不卡视频| 国产在线视频不卡二| 久久一区二区三区四区| 久久99国产精品久久99果冻传媒| 欧美探花视频资源| 国产91精品欧美| 久久综合九色综合97_久久久| 免费欧美高清视频| 欧美一二区视频| 国产成人精品免费看| 日韩精品一级中文字幕精品视频免费观看| 久久综合久久综合久久综合| 在线不卡中文字幕播放| 波多野结衣精品在线| 日韩极品在线观看| 亚洲欧美电影一区二区| 26uuu国产在线精品一区二区| 一本大道综合伊人精品热热| 美女视频免费一区| 亚洲va天堂va国产va久| 伊人色综合久久天天| 中文字幕在线视频一区| 欧美韩国日本综合| 精品剧情在线观看| 久久久久久久久久久久久久久99 | 久久嫩草精品久久久精品| 欧美亚洲自拍偷拍| 日韩一区和二区| 欧美一区二区免费视频| 日本韩国一区二区三区| 91精品国产综合久久婷婷香蕉| 欧美日韩一区二区三区在线 |