Linux下實(shí)現(xiàn)PHP多進(jìn)程的方法分享
更新時(shí)間:2012年08月16日 10:52:46 作者:
PHP多進(jìn)程:使用PHP的Process Control Functions(PCNTL/線程控制函數(shù)),需要的朋友可以參考下
PHP多進(jìn)程:使用PHP的Process Control Functions(PCNTL/線程控制函數(shù))
函數(shù)參考可見:http://www.php.net/manual/zh/ref.pcntl.php
只能用在Unix Like OS,Windows不可用。
編譯php的時(shí)候,需要加上–enable-pcntl,且推薦僅僅在CLI模式運(yùn)行,不要在WEB服務(wù)器環(huán)境運(yùn)行。
以下為實(shí)現(xiàn)PHP多進(jìn)程的簡單測(cè)試代碼:
<?php
declare(ticks=1);
$bWaitFlag = FALSE; /// 是否等待進(jìn)程結(jié)束
$intNum = 10; /// 進(jìn)程總數(shù)
$pids = array(); /// 進(jìn)程PID數(shù)組
echo ("Start\n");
for($i = 0; $i < $intNum; $i++) {
$pids[$i] = pcntl_fork();/// 產(chǎn)生子進(jìn)程,而且從當(dāng)前行之下開試運(yùn)行代碼,而且不繼承父進(jìn)程的數(shù)據(jù)信息
if(!$pids[$i]) {
// 子進(jìn)程進(jìn)程代碼段_Start
$str="";
sleep(5+$i);
for ($j=0;$j<$i;$j++) {$str.="*";}
echo "$i -> " . time() . " $str \n";
exit();
// 子進(jìn)程進(jìn)程代碼段_End
}
}
if ($bWaitFlag)
{
for($i = 0; $i < $intNum; $i++) {
pcntl_waitpid($pids[$i], $status, WUNTRACED);
echo "wait $i -> " . time() . "\n";
}
}
echo ("End\n");
?>
函數(shù)參考可見:http://www.php.net/manual/zh/ref.pcntl.php
只能用在Unix Like OS,Windows不可用。
編譯php的時(shí)候,需要加上–enable-pcntl,且推薦僅僅在CLI模式運(yùn)行,不要在WEB服務(wù)器環(huán)境運(yùn)行。
以下為實(shí)現(xiàn)PHP多進(jìn)程的簡單測(cè)試代碼:
復(fù)制代碼 代碼如下:
<?php
declare(ticks=1);
$bWaitFlag = FALSE; /// 是否等待進(jìn)程結(jié)束
$intNum = 10; /// 進(jìn)程總數(shù)
$pids = array(); /// 進(jìn)程PID數(shù)組
echo ("Start\n");
for($i = 0; $i < $intNum; $i++) {
$pids[$i] = pcntl_fork();/// 產(chǎn)生子進(jìn)程,而且從當(dāng)前行之下開試運(yùn)行代碼,而且不繼承父進(jìn)程的數(shù)據(jù)信息
if(!$pids[$i]) {
// 子進(jìn)程進(jìn)程代碼段_Start
$str="";
sleep(5+$i);
for ($j=0;$j<$i;$j++) {$str.="*";}
echo "$i -> " . time() . " $str \n";
exit();
// 子進(jìn)程進(jìn)程代碼段_End
}
}
if ($bWaitFlag)
{
for($i = 0; $i < $intNum; $i++) {
pcntl_waitpid($pids[$i], $status, WUNTRACED);
echo "wait $i -> " . time() . "\n";
}
}
echo ("End\n");
?>
您可能感興趣的文章:
- PHP實(shí)現(xiàn)的多進(jìn)程控制demo示例
- 深入探究PHP的多進(jìn)程編程方法
- PHP多進(jìn)程之pcntl_fork的實(shí)例詳解
- PHP使用pcntl_fork實(shí)現(xiàn)多進(jìn)程下載圖片的方法
- PHP的pcntl多進(jìn)程用法實(shí)例
- php中實(shí)現(xiàn)進(jìn)程鎖與多進(jìn)程的方法
- PHP多進(jìn)程編程總結(jié)(推薦)
- 分享PHP-pcntl 實(shí)現(xiàn)多進(jìn)程代碼
- php多進(jìn)程模擬并發(fā)事務(wù)產(chǎn)生的問題小結(jié)
- PHP多進(jìn)程通信-消息隊(duì)列使用
- php多進(jìn)程應(yīng)用場(chǎng)景實(shí)例詳解
相關(guān)文章
PHP導(dǎo)出EXCEL快速開發(fā)指南--PHPEXCEL的使用詳解
本篇文章是對(duì)PHPEXCEL的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06php使用str_replace實(shí)現(xiàn)輸入框回車替換br的方法
這篇文章主要介紹了php使用str_replace實(shí)現(xiàn)輸入框回車替換br的方法,可實(shí)現(xiàn)使用\\n替換成br的方法,需要的朋友可以參考下2014-11-11php使用unset()刪除數(shù)組中某個(gè)單元(鍵)的方法
這篇文章主要介紹了php使用unset()刪除數(shù)組中某個(gè)單元(鍵)的方法,實(shí)例分析了unset函數(shù)在刪除數(shù)組單元時(shí)的使用技巧,需要的朋友可以參考下2015-02-02php設(shè)計(jì)模式 Factory(工廠模式)
定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定將哪一個(gè)類實(shí)例化,使用一個(gè)類的實(shí)例化延遲到其子類2011-06-06php實(shí)現(xiàn)分頁功能的詳細(xì)實(shí)例方法
在本篇文章里小編給大家整理的是關(guān)于php實(shí)現(xiàn)分頁功能的詳細(xì)實(shí)例方法,有需要的朋友們可以學(xué)習(xí)下。2019-09-09簡單的cookie計(jì)數(shù)器實(shí)現(xiàn)源碼
本篇文章是對(duì)一個(gè)簡單的cookie計(jì)數(shù)器的實(shí)現(xiàn)源碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06原生JS實(shí)現(xiàn)Ajax通過POST方式與PHP進(jìn)行交互的方法示例
這篇文章主要介紹了原生JS實(shí)現(xiàn)Ajax通過POST方式與PHP進(jìn)行交互的方法,涉及ajax使用post方式與后臺(tái)交互及php數(shù)據(jù)接收、處理、查詢數(shù)據(jù)庫等相關(guān)操作技巧,需要的朋友可以參考下2018-05-05