国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php進程間通訊實例分析

2024-05-04 23:47:48
字體:
來源:轉載
供稿:網友

本文實例講述了php進程間通訊的方法。分享給大家供大家參考,具體如下:

php單進程單線程處理批量任務太慢了,受不鳥了,但是php不能多線程,最終選擇了多進程處理批量任務.

php多進程主要使用for進行分裂,然后利用的unix/linux的信號量進行進程間通訊.

本例使用的是:生產者=>消費者=>收集器,的模式.

<?php// ===== 全局變量 =====// ipc進程間通訊$key = ftok(__FILE__, "a");$queue = msg_get_queue($key);// 進程ID$producer_pid = 0;$consumers_pid = array();$collector_pid = posix_getpid();// ===== 消費者 =====for ($i=0; $i < 2; $i++) {  $consumer_pid = pcntl_fork();  if ($consumer_pid == -1) {    exit("could not fork!/n");  } else if ($consumer_pid) {    // pcntl_wait($status);    echo "consumer_pid: $consumer_pid/n";    $consumers_pid[] = $consumer_pid;  } else {    $pid = posix_getpid();    echo "consumer_pid: $pid start/n";    while (true) {      msg_receive($queue, $pid, $msgtype, 1024, $message);      if ($message == "exit") {        break;      }      // 數據處理      $n = intval($message);      msg_send($queue, $collector_pid, $n * $n);    }    exit("consumer ok!/n");  }}// ===== 產生者 =====$producer_pid = pcntl_fork();if ($producer_pid == -1) {  exit("could not fork!/n");} else if ($producer_pid) {  // pcntl_wait($status);  echo "producer_pid: $producer_pid/n";} else {  $pid = posix_getpid();  echo "producer_pid: $pid start/n";  $n = 0;  for ($i=0; $i < 10; $i++) {    foreach ($consumers_pid as $consumer_pid) {      $n++;      msg_send($queue, $consumer_pid, $n);    }    sleep(1);  }  foreach ($consumers_pid as $consumer_pid) {    msg_send($queue, $consumer_pid, "exit");  }  sleep(1);  msg_send($queue, $collector_pid, "exit");  exit("producer ok!/n");}// ===== 收集器 =====while (true) {  msg_receive($queue, $collector_pid, $msgtype, 1024, $message);  if ($message == "exit") {    break;  }  echo sprintf("% 5d: %d/n", $msgtype, $message);}exit("collector ok!/n");


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 梓潼县| 理塘县| 甘洛县| 广德县| 博兴县| 丹江口市| 彭州市| 长岭县| 汕头市| 惠水县| 宁夏| 松溪县| 县级市| 道真| 前郭尔| 沛县| 盐源县| 辽宁省| 毕节市| 嘉义市| 海阳市| 易门县| 富宁县| 定安县| 巴中市| 元氏县| 遂平县| 城口县| 博兴县| 武隆县| 禹城市| 集贤县| 津南区| 武汉市| 鲜城| 太原市| 平邑县| 晋江市| 桑日县| 宜良县| 胶南市|