最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分享PHP-pcntl 實(shí)現(xiàn)多進(jìn)程代碼

 更新時(shí)間:2016年09月30日 08:49:39   作者:zhaoyingnan911  
PHP可通過(guò)PCNTL擴(kuò)展實(shí)現(xiàn)進(jìn)程控制,如進(jìn)程創(chuàng)建,信號(hào)處理,進(jìn)程中斷判斷等。但只能在CLI模式下操作。PCNTL的信號(hào)機(jī)制是基于 ticks 機(jī)制實(shí)現(xiàn)的。

PHP使用PCNTL系列的函數(shù)也能做到多進(jìn)程處理一個(gè)事務(wù)。比如我需要從數(shù)據(jù)庫(kù)中獲取80w條的數(shù)據(jù),再做一系列后續(xù)的處理,這個(gè)時(shí)候,用單進(jìn)程?你可以等到明年今天了。。。所以應(yīng)該使用pcntl函數(shù)了。

下面我們來(lái)看個(gè)實(shí)例

代碼

<?php
$arChildId = array();

for($i = 0; $i < 10; $i++)
{
$iPid = pcntl_fork();
if($iPid == -1)
{
  die('can\'t be forked.');
}

if($iPid)
{
  # 主進(jìn)程邏輯
  $arChildId[] = $iPid;
}
else
  {
  # 子進(jìn)程邏輯
  $iPid = posix_getpid(); # 獲取子進(jìn)程的ID
  $iSeconds = rand(5, 30);
  echo '* Process '. $iPid. ' was created, and Executed, and Sleep '. $iSeconds. PHP_EOL;
  excuteProcess($iPid, $iSeconds);
  exit();
}
}

while(count($arChildId) > 0)
{
foreach($arChildId as $iKey=> $iPid)
{
  $res = pcntl_waitpid($iPid, $status, WNOHANG);

  if($res == -1 || $res > 0)
  {
    unset($arChildId[$iKey]);
    echo '* Sub process: '. $iPid. ' exited with '. $status. PHP_EOL;
  }
}
}

# 子進(jìn)程執(zhí)行的邏輯
function excuteProcess($iPid, $iSeconds)
{
file_put_contents('./log/'.$iPid.'.log', $iPid.PHP_EOL, FILE_APPEND);
sleep($iSeconds);
}
?>

運(yùn)行結(jié)果

* Process 16163 was created, and Executed, and Sleep 11
* Process 16164 was created, and Executed, and Sleep 21
* Process 16165 was created, and Executed, and Sleep 24
* Process 16166 was created, and Executed, and Sleep 27
* Process 16167 was created, and Executed, and Sleep 8
* Process 16168 was created, and Executed, and Sleep 14
* Process 16169 was created, and Executed, and Sleep 14
* Process 16170 was created, and Executed, and Sleep 26
* Process 16171 was created, and Executed, and Sleep 20
* Process 16172 was created, and Executed, and Sleep 21
* Sub process: 16167 exited with 0
* Sub process: 16163 exited with 0
* Sub process: 16169 exited with 0
* Sub process: 16168 exited with 0
* Sub process: 16171 exited with 0
* Sub process: 16164 exited with 0
* Sub process: 16172 exited with 0
* Sub process: 16165 exited with 0
* Sub process: 16170 exited with 0
* Sub process: 16166 exited with 0

相關(guān)文章

  • 全面了解PHP中的全局變量

    全面了解PHP中的全局變量

    下面小編就為大家?guī)?lái)一篇全面了解PHP中的全局變量。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • PHP實(shí)現(xiàn)多條件查詢實(shí)例代碼

    PHP實(shí)現(xiàn)多條件查詢實(shí)例代碼

    在我們的網(wǎng)站設(shè)計(jì)過(guò)程中,經(jīng)常會(huì)用到多條件查詢,本文的源碼是一個(gè)二手房屋查詢的例子。在本例中,我們要實(shí)現(xiàn)能夠通過(guò)地理位置,物業(yè)類型,房屋價(jià)格,房屋面積及信息發(fā)布日期等多個(gè)條件查詢到客戶所需的資料。
    2010-07-07
  • 實(shí)例講解PHP頁(yè)面靜態(tài)化

    實(shí)例講解PHP頁(yè)面靜態(tài)化

    本篇文章主要給大家通過(guò)實(shí)例講解了PHP頁(yè)面靜態(tài)化的原理以及相關(guān)方法,對(duì)此有需要的朋友參考下吧。
    2018-02-02
  • php生成隨機(jī)顏色方法匯總

    php生成隨機(jī)顏色方法匯總

    前段時(shí)間在一個(gè)項(xiàng)目中,需要在同一個(gè)頁(yè)面中的任意div背景顏色值,用php自動(dòng)生成,也就是說(shuō)每個(gè)div都產(chǎn)生不同的顏色
    2014-12-12
  • yii2.0框架多模型操作示例【添加/修改/刪除】

    yii2.0框架多模型操作示例【添加/修改/刪除】

    這篇文章主要介紹了yii2.0框架多模型操作,結(jié)合實(shí)例形式分析了Yii2.0多模型添加、修改及刪除具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-04-04
  • Laravel6.18.19如何優(yōu)雅的切換發(fā)件賬戶

    Laravel6.18.19如何優(yōu)雅的切換發(fā)件賬戶

    這篇文章主要給大家介紹了關(guān)于Laravel6.18.19如何優(yōu)雅的切換發(fā)件賬戶的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Laravel6.18.19具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 淺談Laravel模板實(shí)體轉(zhuǎn)義帶來(lái)的坑

    淺談Laravel模板實(shí)體轉(zhuǎn)義帶來(lái)的坑

    今天小編就為大家分享一篇淺談Laravel模板實(shí)體轉(zhuǎn)義帶來(lái)的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • php實(shí)現(xiàn)二叉樹中和為某一值的路徑方法

    php實(shí)現(xiàn)二叉樹中和為某一值的路徑方法

    在本篇文章中我們給大家分享了php實(shí)現(xiàn)二叉樹中和為某一值的路徑方法,有需要的朋友們可以參考下。
    2018-10-10
  • php遞歸函數(shù)三種實(shí)現(xiàn)方法及如何實(shí)現(xiàn)數(shù)字累加

    php遞歸函數(shù)三種實(shí)現(xiàn)方法及如何實(shí)現(xiàn)數(shù)字累加

    實(shí)現(xiàn)遞歸函數(shù)有哪些方法呢?如何用遞歸函數(shù)實(shí)現(xiàn)數(shù)字累加?這篇文章就主要介紹php遞歸函數(shù)三種實(shí)現(xiàn)方法及如何實(shí)現(xiàn)數(shù)字累加,需要的朋友可以參考下。
    2015-08-08
  • 使用php測(cè)試硬盤寫入速度示例

    使用php測(cè)試硬盤寫入速度示例

    使用php寫入一個(gè)1GB大小的文件,檢查硬盤的寫速率,可能有一定誤差,一般電腦讀寫在20M/s,這個(gè)測(cè)試要執(zhí)行大概40-50s
    2014-01-01

最新評(píng)論

专栏| 奇台县| 连云港市| 庆元县| 红原县| 聂荣县| 玛纳斯县| 东乌珠穆沁旗| 旌德县| 武鸣县| 永川市| 蓬溪县| 福建省| 娱乐| 天台县| 南京市| 图木舒克市| 台山市| 新巴尔虎左旗| 阿瓦提县| 托克逊县| 石城县| 盘锦市| 丹江口市| 收藏| 株洲县| 渝中区| 黄山市| 大英县| 永年县| 喀喇| 来凤县| 彝良县| 大田县| 阿尔山市| 安岳县| 达尔| 卓资县| 乌兰县| 微山县| 台湾省|