成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > php 的多進(jìn)程操作實(shí)踐案例分析

php 的多進(jìn)程操作實(shí)踐案例分析

熱門(mén)標(biāo)簽:山西回?fù)芡夂粝到y(tǒng) 青島語(yǔ)音外呼系統(tǒng)招商 揚(yáng)州地圖標(biāo)注app 昭通辦理400電話 岳陽(yáng)外呼型呼叫中心系統(tǒng)在哪里 百應(yīng)電話機(jī)器人服務(wù) 騰訊外呼管理系統(tǒng) 河南電銷卡外呼系統(tǒng)哪家強(qiáng) 山西探意電話機(jī)器人

本文實(shí)例講述了php 的多進(jìn)程操作。分享給大家供大家參考,具體如下:

php的多進(jìn)程處理依賴于pcntl擴(kuò)展,通過(guò)pcntl_fork創(chuàng)建子進(jìn)程來(lái)進(jìn)行并行處理。

例1如下:

?php
$pid = pcntl_fork();

if($pid == -1) {
  //錯(cuò)誤處理:創(chuàng)建子進(jìn)程失敗時(shí)返回-1.
  die('fork error');
} else if ($pid) {
  //父進(jìn)程會(huì)得到子進(jìn)程號(hào),所以這里是父進(jìn)程執(zhí)行的邏輯
  echo "parent \n";
  //等待子進(jìn)程中斷,防止子進(jìn)程成為僵尸進(jìn)程。
  pcntl_wait($status);
} else {
  //子進(jìn)程得到的$pid為0, 所以這里是子進(jìn)程執(zhí)行的邏輯。
  echo "child \n";

  exit;
}

pcntl_fork創(chuàng)建了子進(jìn)程,父進(jìn)程和子進(jìn)程都繼續(xù)向下執(zhí)行,而不同是父進(jìn)程會(huì)獲取子進(jìn)程的$pid也就是$pid不為零。而子進(jìn)程會(huì)獲取$pid為零。通過(guò)if else語(yǔ)句判斷$pid我們就可以在指定位置寫(xiě)上不同的邏輯代碼。

上述代碼會(huì)分別輸出parent和child。那么輸出的parent和child是否會(huì)有順序之分?是父進(jìn)程會(huì)先執(zhí)行?

例2如下:

?php
$pid = pcntl_fork();

if($pid == -1) {
  die('fork error');
} else if ($pid) {
  sleep(3);
  echo "parent \n";
  pcntl_wait($status);
} else {
  echo "child \n";

  exit;
}

我們?cè)诟高M(jìn)程中通過(guò)sleep來(lái)延緩執(zhí)行,看看效果。

結(jié)果是,很快輸出了child,等待了接近3秒后,才輸出parent。所以父進(jìn)程和子進(jìn)程的執(zhí)行是相對(duì)獨(dú)立的,沒(méi)有先后之分。

那么問(wèn)題又來(lái)了?pcntl_wait是做什么用的?
會(huì)掛起當(dāng)前進(jìn)程,直到子進(jìn)程退出,如果子進(jìn)程在調(diào)用此函數(shù)之前就已退出,此函數(shù)會(huì)立刻返回。子進(jìn)程使用的資源將被釋放。

例3如下:

?php
$pid = pcntl_fork();

if($pid == -1) {
  die('fork error');
} else if ($pid) {
  pcntl_wait ($status);
  echo "parent \n";
} else {
  sleep(3);
  echo "child \n";

  exit;
}

上述代碼,我們可以看到,父進(jìn)程執(zhí)行pcntl_wait時(shí)就已經(jīng)掛起,直到等待3秒后輸出child,子進(jìn)程退出后。父進(jìn)程繼續(xù)執(zhí)行,輸出parent。

例4如下:

?php
define('FORK_NUMS', 3);

$pids = array();

for($i = 0; $i  FORK_NUMS; ++$i) {
  $pids[$i] = pcntl_fork();
  if($pids[$i] == -1) {
    die('fork error');
  } else if ($pids[$i]) {
    pcntl_waitpid($pids[$i], $status);
    echo "pernet \n";
  } else {
    sleep(3);
    echo "child id:" . getmypid() . " \n";
    exit;
  }
}

上述代碼,我們創(chuàng)建3個(gè)子進(jìn)程,父進(jìn)程分別掛起等待子進(jìn)程結(jié)束后,輸出parent。

輸出結(jié)果如下:

child id:19090
pernet
child id:19091
pernet
child id:19092
pernet

例5如下:

?php
define('FORK_NUMS', 3);

$pids = array();

for($i = 0; $i  FORK_NUMS; ++$i) {
  $pids[$i] = pcntl_fork();
  if($pids[$i] == -1) {
    die('fork error');
  } else if ($pids[$i]) {

  } else {
    sleep(3);
    echo "child id:" . getmypid() . " \n";
    exit;
  }
}

foreach($pids as $k => $v) {
  if($v) {
    pcntl_waitpid($v, $status);
    echo "parent \n";
  }
}

輸出結(jié)果如下:

child id:19118
child id:19119
child id:19120
parent
parent
parent

為什么上述代碼跟例4的輸出結(jié)果不一樣?

我們可以看到例5的pcntl_waitpid函數(shù)放在了foreach中,foreach代碼是在主進(jìn)程中,也就是父進(jìn)程的代碼中。當(dāng)執(zhí)行foreach時(shí),可能子進(jìn)程已經(jīng)全部執(zhí)行完畢并退出。pcntl_waitpid會(huì)立刻返回,連續(xù)輸出三個(gè)parent。

(*在子進(jìn)程中,需通過(guò)exit來(lái)退出,不然會(huì)產(chǎn)生遞歸多進(jìn)程,父進(jìn)程中不需要exit,不然會(huì)中斷多進(jìn)程。)

例6如下:

?php
define('FORK_NUMS', 3);

$pids = array();

$fp = fopen('./test.log', 'wb');
$num = 1;

for($i = 0; $i  FORK_NUMS; ++$i) {
  $pids[$i] = pcntl_fork();
  if($pids[$i] == -1) {
    die('fork error');
  } else if ($pids[$i]) {


  } else {
    for($i = 0; $i  5; ++$i) {

      flock($fp, LOCK_EX);
      fwrite($fp, getmypid() . ' : ' . date('Y-m-d H:i:s') . " : {$num} \r\n");

      flock($fp, LOCK_UN);
      echo getmypid(), ": success \r\n";
      ++$num;
    }
    exit;
  }
}

foreach($pids as $k => $v) {
  if($v) {
    pcntl_waitpid($v, $status);
  }
}

fclose($fp);

代碼如上:我們創(chuàng)建三個(gè)子進(jìn)程,來(lái)同時(shí)向test.log文件寫(xiě)入內(nèi)容,test.log內(nèi)容如下:

19507 : 2016-03-16 20:40:52 : 1
19507 : 2016-03-16 20:40:52 : 2
19507 : 2016-03-16 20:40:52 : 3
19507 : 2016-03-16 20:40:52 : 4
19507 : 2016-03-16 20:40:52 : 5
19509 : 2016-03-16 20:40:52 : 1
19509 : 2016-03-16 20:40:52 : 2
19509 : 2016-03-16 20:40:52 : 3
19509 : 2016-03-16 20:40:52 : 4
19509 : 2016-03-16 20:40:52 : 5
19508 : 2016-03-16 20:40:52 : 1
19508 : 2016-03-16 20:40:52 : 2
19508 : 2016-03-16 20:40:52 : 3
19508 : 2016-03-16 20:40:52 : 4
19508 : 2016-03-16 20:40:52 : 5

我們可以看到三個(gè)子進(jìn)程的pid,它們分別執(zhí)行了5次,時(shí)間幾乎是在同時(shí)。但是$num的值并沒(méi)像我們期望的那樣從1-15進(jìn)行遞增。子進(jìn)程中的變量是各自獨(dú)立的,互不影響。子進(jìn)程會(huì)自動(dòng)復(fù)制父進(jìn)程空間里的變量。

如何在進(jìn)程中共享數(shù)據(jù)?

我們通過(guò)php的共享內(nèi)存函數(shù)shmop來(lái)實(shí)現(xiàn)。

?php
define('FORK_NUMS', 3);

$pids = array();

$fp = fopen('./test.log', 'wb');
$num = 1;
//共享內(nèi)存段的key
$shmKey = 123;
//創(chuàng)建共享內(nèi)存段
$shmId = shmop_open($shmKey, 'c', 0777, 64);
//寫(xiě)入數(shù)據(jù)到共享內(nèi)存段
shmop_write($shmId, $num, 0);

for($i = 0; $i  FORK_NUMS; ++$i) {
  $pids[$i] = pcntl_fork();
  if($pids[$i] == -1) {
    die('fork error');
  } else if ($pids[$i]) {

    //阻塞,等待子進(jìn)程退出

    //注意這里,如果是非阻塞的話,$num的計(jì)數(shù)會(huì)出現(xiàn)問(wèn)題。
    pcntl_waitpid($pids[$i], $status);
  } else {
    //讀取共享內(nèi)存段中的數(shù)據(jù)
    $num = shmop_read($shmId, 0, 64);
    for($i = 0; $i  5; ++$i) {
      fwrite($fp, getmypid() . ' : ' . date('Y-m-d H:i:s') . " : {$num} \r\n");
      echo getmypid(), ": success \r\n";
      //遞增$num
      $num = intval($num) + 1;
    }

    //寫(xiě)入到共享內(nèi)存段中

    shmop_write($shmId, $num, 0);
    exit;
  }
}

//shmop_delete不會(huì)實(shí)際刪除該內(nèi)存段,它將該內(nèi)存段標(biāo)記為刪除。
shmop_delete($shmId);
shmop_close($shmId);
fclose($fp);

上述代碼的運(yùn)行結(jié)果如下:

19923 : 2016-03-17 00:05:18 : 1
19923 : 2016-03-17 00:05:18 : 2
19923 : 2016-03-17 00:05:18 : 3
19923 : 2016-03-17 00:05:18 : 4
19923 : 2016-03-17 00:05:18 : 5
19924 : 2016-03-17 00:05:18 : 6
19924 : 2016-03-17 00:05:18 : 7
19924 : 2016-03-17 00:05:18 : 8
19924 : 2016-03-17 00:05:18 : 9
19924 : 2016-03-17 00:05:18 : 10
19925 : 2016-03-17 00:05:18 : 11
19925 : 2016-03-17 00:05:18 : 12
19925 : 2016-03-17 00:05:18 : 13
19925 : 2016-03-17 00:05:18 : 14
19925 : 2016-03-17 00:05:18 : 15

這樣我們就在進(jìn)程間共享了$num的數(shù)據(jù)。

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

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

您可能感興趣的文章:
  • php多進(jìn)程中的阻塞與非阻塞操作實(shí)例分析
  • php多進(jìn)程并發(fā)編程防止出現(xiàn)僵尸進(jìn)程的方法分析
  • php 多進(jìn)程編程父進(jìn)程的阻塞與非阻塞實(shí)例分析
  • php實(shí)現(xiàn)的簡(jiǎn)單多進(jìn)程服務(wù)器類完整示例
  • PHP多進(jìn)程簡(jiǎn)單實(shí)例小結(jié)
  • PHP 多進(jìn)程與信號(hào)中斷實(shí)現(xiàn)多任務(wù)常駐內(nèi)存管理實(shí)例方法
  • php swoole多進(jìn)程/多線程用法示例【基于php7nts版】
  • PHP基于swoole多進(jìn)程操作示例
  • 詳解PHP多進(jìn)程消費(fèi)隊(duì)列

標(biāo)簽:南陽(yáng) 銅川 鎮(zhèn)江 宜賓 婁底 湛江 寶雞 黃南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php 的多進(jìn)程操作實(shí)踐案例分析》,本文關(guān)鍵詞  php,的,多,進(jìn)程,操作,實(shí)踐,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php 的多進(jìn)程操作實(shí)踐案例分析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于php 的多進(jìn)程操作實(shí)踐案例分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲一区二区中文在线| 亚洲一区和二区| 欧美伦理视频在线观看| 欧美黄色一区二区| 一二三四在线视频观看社区| 天天在线免费视频| 国产福利一区在线观看| 西野翔中文久久精品国产| 免费a级人成a大片在线观看| 一本大道久久精品懂色aⅴ| 日韩一级片免费观看| 国产经典中年夫妇盗摄| 《视频一区视频二区| 日韩极品一区| 亚洲精品有码在线| 亚洲精品国产一区黑色丝袜| 欧美一区二区三区久久| 中日韩在线视频| 国产在线精品日韩| 老**午夜毛片一区二区三区| 久久久久久久久久久久久国产| 91碰在线视频| 亚洲成熟丰满熟妇高潮xxxxx| 一区二区视频在线| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 人妻一区二区三区免费| 亚洲午夜三级在线| 国产精品草莓在线免费观看| 国产精品免费一区二区三区四区| 色综合久久中文字幕综合网小说| 狠狠躁夜夜躁人人爽天天高潮| 国产视频久久久| 亚洲国产高清在线观看视频| 一本大道久久a久久综合| 91精品国产九九九久久久亚洲| 五月精品在线| 国产精品黑丝在线播放| 秋霞午夜一区二区三区视频| 亚洲啊啊啊啊啊| 国产精品乱码| 人妻体内射精一区二区三区| 久久综合亚州| 欧美国产精品久久| 日本福利视频在线观看| 亚洲欧洲国产日本综合| 久久久久在线视频| 国产交换配乱淫视频免费| 男人操女人的视频网站| 国产专区中文字幕| 欧美激情视频网站| 亚洲免费福利视频| 欧美视频三区在线播放| а√在线中文在线新版| 久久天堂精品| 欧美视频精品在线观看| 一区在线观看| 国产精品一二三在线观看| 中文字幕专区| 国产草草浮力影院| 天天综合狠狠精品| 99久久久无码国产精品性| 国产成人综合视频| 日韩伦理在线观看| 欧美激情欧美激情在线五月| 亚洲视频在线看| 欧美激情久久久| 日本免费一区二区三区视频| 无码aⅴ精品一区二区三区浪潮| 成人欧美视频在线| 成人h视频在线观看| 免费看的国产视频网站| av影片在线播放| 欧美人与性动交| 欧美偷拍一区二区| 国产男男chinese网站| 日本一区二区三区视频| 日本精品人妻无码77777| 在线观看日韩视频| 91精品人妻一区二区三区蜜桃欧美| 中文字幕 日本| 欧美黄色影院| 久久电影一区二区| 先锋欧美三级| 亚洲精品一区中文| 久久久久亚洲av成人毛片韩| 7777精品伊人久久久大香线蕉超级流畅| 日韩免费电影| 久热精品视频在线播放| 免费黄网大全| 免费无码国产v片在线观看| 国产精品久久久久久久| 激情欧美成人久久综合小说| 国产成人精品一区二三区在线观看| 亚洲精品一区二区三区不| 午夜一区二区三区| 欧美一级久久久久久久大片| 美国黄色片视频| 粉嫩一区二区三区| 91av久久久| 污片视频在线免费观看| www.色天使| 在线精品亚洲一区二区| 国产成人三级| 亚洲精品美女在线| 免费一级欧美在线观看视频| 蜜桃tv在线播放| 日韩毛片高清在线播放| 国产免费播放一区二区| 国产精品18久久久久久久久久久久| 一级黄色大片免费看| 久久久一二三四| 欧美xxxxbbbb在线播放| 亚洲黄色成人网| 久久精品久久久| 亚洲成熟丰满熟妇高潮xxxxx| 日韩专区欧美专区| 国产aⅴ夜夜欢一区二区三区| h动漫在线视频| 精品国产视频在线| eeuss影院www在线观看免费| 欧美日韩福利在线观看| 日韩成人一级片| 成人黄色在线播放| 成年网址网站在线观看| 亚洲乱码一区二区三区| 北条麻妃国产九九九精品小说| 亚洲免费视频网站| 暧暧视频免费| 日本网站免费观看| 成人欧美大片| 国产亚洲一本大道中文在线| 成人区精品一区二区婷婷| 国产精品hd| 欧美另类一区二区三区| 欧美激情一二三区| 色综合伊人色综合网站| 午夜精品电影在线观看| 天然素人一区二区视频| 亚洲黄色精品| 悠悠色在线精品| 国产无限制自拍| 久久黄色美女电影| 69xxx免费视频| 91免费观看视频| 激情在线观看视频| 久久久久久www| 欧美交a欧美精品喷水| av网址在线观看免费| 精品美女视频在线观看免费软件| 欧美日韩国产精品一区二区三区| 高清不卡一区二区三区| 香蕉视频成人在线| 肉丝美足丝袜一区二区三区四| 欧美性受xxxx黑人xyx性爽| 亚洲乱熟女一区二区| 激情六月婷婷综合| 亚洲大尺度在线观看| 992tv成人免费视频| 欧美r级在线| 日日摸夜夜添夜夜添亚洲女人| 亚洲精品日韩av| 日韩爱爱小视频| 97久久超碰国产精品电影| 500福利第一精品导航| jizzjizzxxxx| www久久99| 精品在线视频一区| 欧洲国产精品| 国产精品香蕉一区二区三区| 亚洲视频在线不卡| 手机看片1024国产| a√免费观看在线网址www| 久久久久久一区二区| 日韩一区二区精品葵司在线| 久久福利视频导航| 可以直接在线观看的av| 中文字幕在线观看第一页| jizzjizzjizz亚洲女| 色噜噜狠狠一区二区三区| 亚洲v国产v在线观看| 黄网站在线观看永久免费| 国产aⅴ爽av久久久久| 国产精品久久久久91| 欧美aaaxxxx做受视频| 国产农村妇女毛片精品久久麻豆| 精品成人在线视频| 免费视频久久久| 精品综合久久久久久8888| 色老汉一区二区三区| 五月丁香综合缴情六月小说| 欧美国产一级片| 欧美韩国一区| 欧美色综合网| 亚洲日本护士毛茸茸| 人操人视频在线观看| 久久99国产精品久久久久久久久| av成人免费在线| 国产欧美在线观看| 亚洲v片在线观看| 成人中心免费视频| 亚洲精品人成网在线播放影院| 欧美精品一区在线| 91在线地址| 国产黄网站在线观看| 久久影视电视剧免费网站| 5858p先锋影音资源网| 久久精品人人爽人人爽| 成人18视频日本| 国产婷婷色一区二区三区| 久久免费精品国产久精品久久久久| 欧美日本韩国一区二区三区视频| 精品少妇人妻一区二区黑料社区| 精品国产污网站| 亚洲精品一区二区三区影院| 精品久久中文字幕久久av| 国产免费成人在线视频| 丰满少妇在线观看bd| 欧美高清在线精品一区| 性色av一区二区三区四区| 国产精品一码二码三码在线| 国产日韩欧美大片| 午夜在线视频观看| 亚洲老妇色熟女老太| 18videosex性欧美麻豆| 亚洲福利视频网| 亚洲国产欧美另类丝袜| 国产一区二区电影在线观看| 青青草91久久久久久久久| 久久精品人人做人人爽人人| 国产爆乳无码一区二区麻豆| 日韩一区二区免费看| 写真福利精品福利在线观看| 精品国内自产拍在线视频| 亚洲精品一区二区三区樱花| 中文字幕一区二区三| 波多野结衣黄色| 污视频网站在线免费| 亚洲经典一区| 91大神在线观看线路一区| 欧美xxxx日本和非洲| 欧美亚洲成人精品| 中文av免费观看| 91精品啪在线观看国产手机| 亚洲色图第三页| 日本黄网站免费| 久久91精品国产| 99久久精品国产麻豆演员表| 成人av电影观看| 亚洲永久网站| 在线视频一区二区三区在线播放| 韩日中文字幕| 成人免费看片| 久久久久久久久久影院| 欧美做爰性生交视频| 国产在线不卡一区二区三区| 夫妻av一区二区| 欧美最猛黑人xxxxwww| 免费视频亚洲| 精品成人在线观看| 日韩av不卡电影| 久久成人综合| www.色呦呦| 国产成人综合一区二区三区| 青青青青在线视频| 欧美极品少妇xxxxⅹ高跟鞋| 黑人巨大精品欧美一区二区免费| 91九色极品视频| 久久精品噜噜噜成人av农村| 欧美一区二区三区视频免费播放| 国产黄色在线观看| 亚洲美女av网站| 欧美高清在线视频观看不卡| 国产91绿帽单男绿奴| 欧美精品97| 亚洲国产精品成人久久蜜臀| 97热精品视频官网| 国产美女久久久久| 久久久不卡影院| 中文字幕超清在线免费观看| 人人影院免费大片| 国产美女视频一区| 一区三区二区视频| 自拍偷拍第1页| 国产一区丝袜| 国产精品视频a| 18禁裸男晨勃露j毛免费观看| 亚洲丝袜自拍清纯另类| 亚洲网站三级| 国产视频播放| 久久97人妻无码一区二区三区| 毛片毛片毛片毛片毛片毛片| 久久日韩粉嫩一区二区三区| 996这里只有精品| 先锋资源在线视频| 精品国产乱码久久久| 午夜剧场日韩| 95精品视频| 老师我好爽再深一点的视频| 国产麻豆免费观看| 日韩日韩日韩日韩日韩| 黄色a级片免费看| 忘忧草在线影院两性视频| 亚洲国产欧美自拍| 天天爱天天做天天操| 国产精品1区2区在线观看| 欧美日韩在线一区二区| 一本久道久久综合狠狠爱| 亚洲成人久久电影| 老司机很黄的视频免费| 国产精品久久久久久久av电影| 亚洲成人18| 亚洲欧美偷拍视频| 亚洲wwww| 国产黄色免费观看| 亚洲午夜久久久久久久久| 国产精品高潮呻吟久久av野狼| 中文字幕中文字幕在线中文字幕三区| 69视频在线观看免费| 亚洲精品成a人在线观看| 美洲天堂一区二卡三卡四卡视频| 亚洲久色影视| 星空影院最新电视剧免费观看| 欧美电影在线免费观看| 欧美日韩国产色视频| 操欧美老女人| 欧美日韩黄网站| 一区二区三区在线视频观看58| 美女张开让男人捅|