日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP多进程处理并行处理任务实例

發布時間:2025/3/8 php 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP多进程处理并行处理任务实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

本文目的

本文通過例子講解linux環境下,使用php進行并發任務處理,以及如何通過pipe用于進程間的數據同步。寫得比較簡單,作為備忘錄。

PHP多進程

通過pcntl_XXX系列函數使用多進程功能。注意:pcntl_XXX只能運行在php CLI(命令行)環境下,在web服務器環境下,會出現無法預期的結果,請慎用!

管道PIPE

管道用于承載簡稱之間的通訊數據。為了方便理解,可以將管道比作文件,進程A將數據寫到管道P中,然后進程B從管道P中讀取數據。php提供的管道操作API與操作文件的API基本一樣,除了創建管道使用posix_mkfifo函數,讀寫等操作均與文件操作函數相同。當然,你可以直接使用文件模擬管道,但是那樣無法使用管道的特性了。

僵尸進程

子進程結束時,父進程沒有等待它(通過調用wait或者waitpid),那么子進程結束后不會釋放所有資源(浪費呀!),這種進程被稱為僵尸進程,他里面存放了子進程結束時的相關數據,如果僵尸進程過多,會占用大量系統資源(如內存),影響機器性能。

代碼

廢話少說直接上代碼

/** ? * this is a demo for php fork and pipe usage. fork use ? * to create child process and pipe is used to sychoroize ? * the child process and its main process. ? * @author bourneli ? * @date: 2012-7-6 ? */ define( "PC" , 10); // 進程個數 define( "TO" , 4); // 超時 define( "TS" , 4); // 事件跨度,用于模擬任務延時 if? (!function_exists( 'pcntl_fork' )) { ???? die ( "pcntl_fork not existing" ); } // 創建管道 $sPipePath? = "my_pipe." .posix_getpid(); if? (!posix_mkfifo( $sPipePath , 0666)) { ???? die ( "create pipe {$sPipePath} error" ); } // 模擬任務并發 for? ( $i? = 0; $i? < PC; ++ $i? ) { ???? $nPID? = pcntl_fork(); // 創建子進程 ???? if? ( $nPID? == 0) { ???????? // 子進程過程 ???????? sleep(rand(1,TS)); // 模擬延時 ???????? $oW? = fopen ( $sPipePath , 'w' ); ???????? fwrite( $oW , $i . "\n" ); // 當前任務處理完比,在管道中寫入數據 ???????? fclose( $oW ); ???????? exit (0); // 執行完后退出 ???? } } // 父進程 $oR? = fopen ( $sPipePath , 'r' ); stream_set_blocking( $oR , FALSE); // 將管道設置為非堵塞,用于適應超時機制 $sData? = '' ; // 存放管道中的數據 $nLine? = 0; $nStart? = time(); while? ( $nLine? < PC && (time() - $nStart ) < TO) { ???? $sLine? = fread ( $oR , 1024); ???? if? ( empty ( $sLine )) { ???????? continue ;?? ???? }?? ????? ???? echo? "current line: {$sLine}\n" ; ???? // 用于分析多少任務處理完畢,通過‘\n’標識 ???? foreach ( str_split ( $sLine ) as? $c ) { ???????? if? ( "\n"? == $c ) { ???????????? ++ $nLine ; ???????? } ???? } ???? $sData? .= $sLine ; } echo? "Final line count:$nLine\n" ; fclose( $oR ); unlink( $sPipePath ); // 刪除管道,已經沒有作用了 // 等待子進程執行完畢,避免僵尸進程 $n? = 0; while? ( $n? < PC) { ???? $nStatus? = -1; ???? $nPID? = pcntl_wait( $nStatus , WNOHANG); ???? if? ( $nPID? > 0) { ???????? echo? "{$nPID} exit\n" ; ???????? ++ $n ; ???? } } // 驗證結果,主要查看結果中是否每個任務都完成了 $arr2? = array (); foreach ( explode ( "\n" , $sData ) as? $i ) { // trim all ???? if? ( is_numeric (trim( $i ))) { ???????? array_push ( $arr2 , $i );? ???? } } $arr2? = array_unique ( $arr2 ); if? ( count ( $arr2 ) == PC) {? ???? echo? 'ok' ; } else? { ???? echo?? "error count "? . count ( $arr2 ) . "\n" ; ???? var_dump( $arr2 ); }


ok,完畢,注釋寫的比較清除,執行結果如下:


轉載于:https://my.oschina.net/u/247923/blog/282663

總結

以上是生活随笔為你收集整理的PHP多进程处理并行处理任务实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男生操女生网站 | 永久免费看片 | 色悠悠久久综合 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产精品88av| 激情综合网五月 | 欧美成人福利 | 国产精品一级黄色片 | 欧美性做爰猛烈叫床潮 | 激情自拍视频 | 国久久| aaa国产视频 | 日韩黄色高清视频 | 日韩中文字幕在线观看 | 精品国产无码AV | 亚洲精品乱码 | 天堂av一区二区三区 | 都市激情 亚洲 | 在线看中文字幕 | 欧美区一区| 欧美黄色短片 | 进去里视频在线观看 | 无码一区二区三区免费 | 三级黄毛片 | 欧美亚洲国产另类 | 国产精品欧美一区二区三区 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 日韩中文无 | 国产无套内射又大又猛又粗又爽 | 九九视频精品在线 | 国产一级片 | 老汉av在线 | 99久久国产热无码精品免费 | 成人av动漫在线 | 国产麻豆一精品一男同 | 国产精品扒开腿做爽爽爽视频 | 久久久久久久久久久丰满 | 日本视频不卡 | たちの熟人妻av一区二区 | 欧美s码亚洲码精品m码 | h欧美| 高清国产一区 | 成人在线激情网 | 打屁股疼的撕心裂肺的视频 | 国产精品视频一区二区三 | а√在线中文网新版地址在线 | 激情国产一区 | 欧美亚洲三级 | 精品一区二区av | 中日韩男男gay无套 人人草人人干 | 免费观看成年人视频 | 中文字幕日韩在线视频 | 欧美天堂在线视频 | 黄色三级图片 | 久久尤物视频 | 亚洲图片在线 | 日本性爱视频在线观看 | 狠狠操婷婷 | 亚洲天堂网站 | 久久久精品人妻一区二区三区 | 一级片视频播放 | 被扒开腿一边憋尿一边惩罚 | 97超碰伊人 | 天堂av中文在线 | 波多野结衣一区二区三区 | 99久久精品国产色欲 | av色片 | 青青在线视频观看 | 久久久精品人妻一区二区三区色秀 | 九九免费在线视频 | 国产精品久久777777毛茸茸 | 99久久人妻无码中文字幕系列 | 天天摸天天舔天天操 | 九热这里只有精品 | 视频久久精品 | 日本不卡在线 | 婷婷综合色| 国产精品久久久久久久久久久久 | 国产精品一区二区三 | 丰满双乳秘书被老板狂揉捏 | 久久精品9 | av网站在线免费 | 成人影音在线 | 一级黄色伦理片 | 国产午夜福利100集发布 | 欧美bbbbb性bbbbb视频 | 国产高清在线一区 | 久久好色 | 萌白酱在线观看 | 成年人免费网站视频 | 色婷婷视频 | 在线免费看av网站 | 亚洲美女久久 | 久久午夜国产精品 | 午夜电影你懂的 | аⅴ天堂中文在线网 | 国产精品一区二区三区免费观看 | 久久久久久久久久久久久久久久久久久久 | www.国产com|