欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

深入解析PHP中的(偽)多線程與多進程_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:php 常用算法和時間復雜度
本篇文章是對php中的常用算法以及時間復雜度進行了詳細的分析介紹,需要的朋友參考下 按數量級遞增排列,常見的時間復雜度有:常數階O(1),對數階O(log2n),線性階O(n),線性對數階O(nlog2n),平方階O(n2),立方階O(n3) 復制代碼 代碼如下: //二分查找O(log2n) function erf

本篇文章是對PHP中的(偽)多線程與多進程進行了詳細的分析介紹,需要的朋友參考下  

(偽)多線程:借助外力
利用WEB服務器本身的多線程來處理,從WEB服務器多次調用我們需要實現多線程的程序。
QUOTE:
我們知道PHP本身是不支持多線程的, 但是我們的WEB服務器是支持多線程的.
也就是說可以同時讓多人一起訪問. 這也是我在PHP中實現多線程的基礎.
假設我們現在運行的是a.php這個文件. 但是我在程序中又請求WEB服務器運行另一個b.php
那么這兩個文件將是同時執行的.
(PS: 一個鏈接請求發送之后, WEB服務器就會執行它, 而不管客戶端是否已經退出)
有些時候, 我們想運行的不是另一個文件, 而是本文件中的一部分代碼.該怎么辦呢?
其實可是通過參數來控制a.php來運行哪一段程序.
下面看一個例子:

復制代碼 代碼如下:
<?php
function runThread(){
$fp = fsockopen('localhost', 80, $errno, $errmsg);
fputs($fp, "GET /a.php?act=brnrn");//這里的第二個參數是HTTP協議中規定的請求頭,不明白的請看RFC中的定義
fclose($fp);
}
function a(){
$fp = fopen('result_a.log', 'w');
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn");
fclose($fp);
}
function b(){
$fp = fopen('result_b.log', 'w');
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn");
fclose($fp);
}
if(!isset($_GET['act'])){ $_GET['act'] = 'a';};
if($_GET['act'] == 'a'){
runThread();
a();
}else if($_GET['act'] == 'b'){
b();
};
?>


打開result_a.log 和 result_b.log 比較一下兩個文件的中訪問的時間. 大家會發現, 這兩個的確是在不同線程中運行的.有些時間完全一樣.
上面只是一個簡單的例子, 大家可以改進成其它形式.
既然PHP中也能多線程了, 那么問題也來了, 那就是同步的問題. 我們知道 PHP本身是不支持多線程的. 所以更不會有什么像Java 中synchronize的方法了. 那我們該如何做呢.

1. 盡量不訪問同一個資源. 以避免沖突. 但是可以同時像數據庫操作. 因為數據庫是支持并發操作的. 所以在多線程的PHP中
不 要向同一個文件中寫入數據. 如果必須要寫的話, 用別的方法進行同步.. 如調用 flock對文件進行加鎖等. 或建立臨時文件并在另外的線程中等待這個文件的消失 while(file_exits('xxx')); 這樣就等于這個臨時文件存在時, 表示其實線程正在操作,如果沒有了這個文件, 說明其它線程已經釋放了這個.

2. 盡量不要從runThread在執行fputs后取這個socket中讀取數據. 因為要實現多線程, 需要的用非阻塞模式. 即在像fgets這樣的函數時立即返回.. 所以讀寫數據就會出問題. 如果使用阻塞模式的話, 程序就不算是多線程了. 他要等上面的返回才執行下面的程序. 所以如果需要交換數據最后利用外面文件或數據中完成. 實在想要的話就用socket_set_nonblock($fp) 來實現.

說了這么多, 倒底這個有沒有實際的意義呢? 在什么時候需要這種用這種方法呢 ?
答案是肯定的. 大家知道. 在一個不斷讀取網絡資源的應用中, 網絡的速度是瓶頸. 如果采多這種形式就可以同時以多個線程對不同的頁面進行讀取.

本人做的一個能從8848、soaso這些商城網站搜索信息的程序。還有一個從阿里巴巴網站上讀取商業信息和公司目錄的程序也用到了此技術。 因為這兩個程序都是要不斷的鏈接它們的服務器讀取信息并保存到數據庫。 利用此技術正好消除了在等待響應時的瓶頸。

多進程:使用PHP的Process Control Functions(PCNTL/線程控制函數)
只能用在Unix Like OS,Windows不可用。
編譯php的時候,需要加上--enable-pcntl,且推薦僅僅在CLI模式運行,不要在WEB服務器環境運行。
以下為簡短的測試代碼:

復制代碼 代碼如下:
declare(ticks=1);
$bWaitFlag = FALSE; /// 是否等待進程結束
$intNum = 10; /// 進程總數
$pids = array(); /// 進程PID數組
echo ("Start\n");
for($i = 0; $i < $intNum; $i++) {
$pids[$i] = pcntl_fork();/// 產生子進程,而且從當前行之下開試運行代碼,而且不繼承父進程的數據信息
if(!$pids[$i]) {
// 子進程進程代碼段_Start
$str="";
sleep(5+$i);
for ($j=0;$j<$i;$j++) {$str.="*";}
echo "$i -> " . time() . " $str \n";
exit();
// 子進程進程代碼段_End
}
}
if ($bWaitFlag)
{
for($i = 0; $i < $intNum; $i++) {
pcntl_waitpid($pids[$i], $status, WUNTRACED);
echo "wait $i -> " . time() . "\n";
}
}
echo ("End\n");


運行結果如下:
CODE:[Copy toclipboard][qiao@oicq qiao]$ phptest.php
Start
End
[qiao@oicq qiao]$ ps -aux | grep "php"
qiao 32275 0.0 0.5 49668 6148pts/1 S 14:03 0:00/usr/local/php4/b
qiao 32276 0.0 0.5 49668 6152pts/1 S 14:03 0:00/usr/local/php4/b
qiao 32277 0.0 0.5 49668 6152pts/1 S 14:03 0:00/usr/local/php4/b
qiao 32278 0.0 0.5 49668 6152pts/1 S 14:03 0:00/usr/local/php4/b
qiao 32279 0.0 0.5 49668 6152pts/1 S 14:03 0:00/usr/local/php4/b
qiao 32280 0.0 0.5 49668 6152pts/1 S 14:03 0:00 /usr/local/php4/b
qiao 32281 0.0 0.5 49668 6152pts/1 S 14:03 0:00/usr/local/php4/b
qiao 32282 0.0 0.5 49668 6152pts/1 S 14:03 0:00/usr/local/php4/b
qiao 32283 0.0 0.5 49668 6152pts/1 S 14:03 0:00/usr/local/php4/b
qiao 32284 0.0 0.5 49668 6152pts/1 S 14:03 0:00/usr/local/php4/b
qiao 32286 0.0 0.0 1620 600pts/1 S 14:03 0:00 grep php
[qiao@oicq qiao]$ 0 -> 1133503401
1 -> 1133503402 *
2 -> 1133503403 **
3 -> 1133503404 ***
4 -> 1133503405 ****
5 -> 1133503406 *****
6 -> 1133503407 ******
7 -> 1133503408 *******
8 -> 1133503409 ********
9 -> 1133503410 *********
[qiao@oicq qiao]$
如果$bWaitFlag=TURE,則結果如下:
CODE:[Copy toclipboard][qiao@oicq qiao]$ phptest.php
Start
0 -> 1133503602
wait 0 -> 1133503602
1 -> 1133503603 *
wait 1 -> 1133503603
2 -> 1133503604 **
wait 2 -> 1133503604
3 -> 1133503605 ***
wait 3 -> 1133503605
4 -> 1133503606 ****
wait 4 -> 1133503606
5 -> 1133503607 *****
wait 5 -> 1133503607
6 -> 1133503608 ******
wait 6 -> 1133503608
7 -> 1133503609 *******
wait 7 -> 1133503609
8 -> 1133503610 ********
wait 8 -> 1133503610
9 -> 1133503611 *********
wait 9 -> 1133503611
End
[qiao@oicq qiao]$
從 多進程的例子可以看出,使用pcntl_fork()之后,將生成一個子進程,而且子進程運行的代碼,從pcntl_fork()之后的代碼開始,而子進 程不繼承父進程的數據信息(實際上是把父進程的數據做了一個全新的拷貝),因而使用if(!$pids[$i]) 來控制子進程實際運行的代碼段。
更詳細的研究出于時間關系,暫時沒有進行,你可以參考我給出的手冊的鏈接。

分享:解析PHP跳出循環的方法以及continue、break、exit的區別介紹
PHP中的循環結構大致有for循環,while循環,do{} while 循環以及foreach循環幾種,不管哪種循環中,在 PHP中跳出循環大致有這么幾種方式: 代碼: 復制代碼 代碼如下: ?php $i = 1; while (true) { // 這里看上去這個循環會一直執行 if ($i==2) {// 2跳過不顯示 $i++;

共3頁上一頁123下一頁
來源:模板無憂//所屬分類:PHP教程/更新時間:2013-07-02
相關PHP教程
深夜成人福利| 日本成人在线免费观看| 欧美精品一二三四区| 国产成人1区| 亚洲视频资源在线| 97久久久久久| 免费涩涩18网站入口| 国产精品一区二区三区在线免费观看| 国产一区亚洲| 欧美影片第一页| 粉嫩高清一区二区三区精品视频| 国产精品无码永久免费不卡| 亚洲美女色播| 久久亚洲综合av| 欧美成人精品在线视频| 99精品视频播放| 99久久精品无免国产免费| 校园激情久久| 精品国产乱码久久久久久久久| 欧美午夜精品久久久久久蜜| 午夜免费激情视频| 欧美三级三级| 懂色av影视一区二区三区| 成人中文字幕+乱码+中文字幕| 久久久久麻豆v国产精华液好用吗| 欧洲亚洲精品| 91麻豆6部合集magnet| 欧美成人午夜激情| 五月婷婷丁香综合网| 香蕉av在线播放| 国产盗摄女厕一区二区三区| 日韩在线免费视频| 亚洲成熟丰满熟妇高潮xxxxx| 国产成人精品一区二三区四区五区 | 亚洲电影一级黄| 91深夜福利视频| 在线免费观看视频| 亚洲精品国模| 欧美日韩国产一区在线| 999日本视频| 91成人福利视频| 亚洲一级淫片| 91麻豆精品国产91久久久久久| 婷婷五月色综合| 欧美特级黄色片| 日本美女一区二区三区| 国产视频精品在线| 日韩精品xxxx| 天天干,夜夜操| 9久草视频在线视频精品| 欧美日韩高清区| 精品人妻一区二区三区免费| 国产精品美女久久久久人| 国产精品美女久久久久久久网站| 国产成人一区二区在线| 亚洲码无人客一区二区三区| 蜜桃一区二区| 欧美中文字幕亚洲一区二区va在线 | 91久久国产婷婷一区二区| 亚洲一二三精品| 欧美国产偷国产精品三区| 欧美在线|欧美| 天堂一区二区三区| 中文字幕+乱码+中文字幕明步| 美女在线视频一区| 久久久精品美女| 无人码人妻一区二区三区免费| 日韩一二三区| 欧美日韩国产一区在线| 久久日韩精品| 中文字幕乱码在线观看| 国内精品伊人久久久久av一坑 | 欧美午夜小视频| 午夜视频福利在线观看| 久久精品视频在线免费观看| 国产精品成人播放| 午夜爽爽爽男女免费观看| 欧美成人一品| 亚洲美女自拍视频| 少妇一级淫免费播放| 日韩视频在线直播| 日韩欧美亚洲成人| 一区二区三区免费看| 午夜精品一二三区| 久久久一区二区三区捆绑**| 国产精品第七十二页| 国产精品视频一区二区三| 在线看片日韩| 亚洲性猛交xxxxwww| 日韩成人精品视频在线观看| 超碰成人在线免费| 91福利资源站| 国产成人在线小视频| 91精品xxx在线观看| 亚洲啪啪综合av一区二区三区| 国产厕所精品在线观看| 波多野结衣网站| 国产精品亚洲人在线观看| 国产91av在线| 欧美一级片在线视频| 在线一区欧美| 久久色在线播放| 熟妇高潮精品一区二区三区| 91tv官网精品成人亚洲| 国产视频精品一区二区三区| 涩多多在线观看| 精品国产91乱码一区二区三区四区| 在线不卡a资源高清| 色综合久久久久无码专区| 欧美在线se| 色系网站成人免费| 日韩美女爱爱视频| 久久日本片精品aaaaa国产| 精品国产精品自拍| 熟妇熟女乱妇乱女网站| 345成人影院| 亚洲国产欧美在线人成| 最新不卡av| 国产精品字幕| 午夜精品一区二区三区免费视频| 国产又大又长又粗又黄| 欧美日韩精品一区二区三区视频| 亚洲国产成人精品视频| 欧美爱爱视频网站| 欧美视频第一| 91福利在线看| 99热成人精品热久久66| 国产一级成人av| 日韩视频永久免费| 成人日韩在线视频| 国产成人1区| 亚洲毛片在线免费观看| 国产免费一区二区三区最新6| 中文无码久久精品| 色悠悠久久久久| 波多野结衣一二三四区| 老司机精品导航| 97在线观看免费高清| 国产亚洲精品女人久久久久久| 国内一区二区在线| 国产日韩欧美自拍| 在线播放精品视频| 国产精品久久久久影院亚瑟 | 在线观看免费黄色网址| 久久免费黄色| 4p变态网欧美系列| 久久视频免费在线观看| 成人av电影在线观看| 国产精品裸体一区二区三区| 成人午夜视频一区二区播放| 亚洲自拍与偷拍| 亚洲五码在线观看视频| 中文字幕一区日韩精品| 精品免费国产二区三区| 亚洲欧美国产精品va在线观看| 自拍偷拍99| 久久伊人精品| 日韩免费福利电影在线观看| 台湾佬美性中文| 红桃视频国产精品| 国内精品免费午夜毛片| 日本在线视频免费观看| 久久综合九色综合欧美98| 欧美精品国产精品久久久| 亚洲综合在线电影| 欧美日韩国产片| 青青草精品在线| 99精品国产福利在线观看免费| 97久久精品国产| 婷婷激情五月综合| 亚洲欧洲日产国码二区| 特级西西444| 国产精品久久久久av蜜臀| 日韩成人在线观看| ass极品国模人体欣赏| 韩国成人在线视频| 99久久精品无码一区二区毛片| 人妻91麻豆一区二区三区| 一本色道亚洲精品aⅴ| 另类小说色综合| 欧美日韩影院| 日本精品免费一区二区三区| 最好看的日本字幕mv视频大全| 亚洲人成人一区二区在线观看 | 成人羞羞网站| 久久天天躁狠狠躁老女人| 欧美黄色免费观看| 国产亚洲一本大道中文在线| 在线观看成人av电影| 成人午夜大片| 最新日韩中文字幕| 国产一级片免费看| 国产日韩欧美综合一区| 51xx午夜影福利| 伊人久久大香线蕉综合网蜜芽 | 欧美日韩久久一区二区| 古装做爰无遮挡三级聊斋艳谭| 亚洲综合二区| 亚洲一区二区三区成人在线视频精品| 神宫寺奈绪一区二区三区| 欧美日韩成人一区二区| 50一60岁老妇女毛片| 久久精品国产久精国产| 国产在线视频欧美一区二区三区| 欧美v亚洲v综合v国产v仙踪林| 亚洲国产精品va在线观看黑人| 特级西西人体高清大胆| kk眼镜猥琐国模调教系列一区二区| 亚洲国产精品www| 欧美日韩麻豆| 欧美大片免费看| 一级片视频网站| 日本丶国产丶欧美色综合| 岛国精品一区二区三区| 韩国一区二区三区| 日本午夜精品电影| 日韩精选在线| 欧美精品videofree1080p| 国产又大又黄的视频| 色女孩综合影院| 捆绑凌虐一区二区三区| 国产999精品久久久久久| 欧美性高潮在线| 午夜精品久久久内射近拍高清| 激情综合久久| 亚洲一区二区三| 国产精品白丝久久av网站| 亚洲性69xxxbbb| 黄色片视频免费| 黑人狂躁日本妞一区二区三区 | 激情 小说 亚洲 图片: 伦| 亚洲制服少妇| 久久久久久久免费| 日本欧美韩国国产| 国外成人性视频| 国产综合视频在线| 欧美成人a在线| 久一视频在线观看| 亚洲第一福利一区| 97人妻精品一区二区三区免费 | 国产一二三四在线| 亚洲综合在线五月| 黑人无套内谢中国美女| 国产成人自拍网| 麻豆视频传媒入口| 国一区二区在线观看| 国产精品三区在线| 久久九九热re6这里有精品| 久久久久久这里只有精品| 欧美 日韩 国产 成人 在线 91| 精品国产髙清在线看国产毛片| 国产一区二区视频在线观看免费| 亚洲日本一区二区三区| 在线成人精品视频| 成人精品视频一区二区三区尤物| 免费毛片网站在线观看| 国产一区二区三区成人欧美日韩在线观看| 精品无人区一区二区三区| 免费看日本一区二区| 国产精品久在线观看| 国产精品亚洲欧美一级在线| 日韩一区在线视频| www.黄色国产| 日韩的一区二区| 自拍偷拍精品视频| 91麻豆精品国产91久久久| 免费三片在线播放| 欧美丝袜一区二区三区| 少妇精品无码一区二区免费视频 | 国产精品男人的天堂| 欧美天堂一区| 欧美人与性动交a欧美精品| 色婷婷av一区二区三区之e本道| 日韩精品在线观看一区| 日韩久久久久久久久久| 日韩天堂在线观看| 欧美三级韩国三级日本三斤在线观看| 一本一道波多野结衣一区二区| 成人免费视频入口| 亚洲午夜久久久久久久久电影网| 内射中出日韩无国产剧情| 国产精品麻豆视频| 免费黄色av网址| 国产欧美一区二区在线观看| 人妻巨大乳一二三区| 久久综合色天天久久综合图片| 亚洲一区在线不卡| 成人免费毛片a| 向日葵污视频在线观看| 成人国产在线观看| 亚洲少妇第一页| 成人免费视频视频| 日韩av手机版| 91小视频在线免费看| 亚洲a级黄色片| 337p粉嫩大胆噜噜噜噜噜91av | 久久一区二区三区超碰国产精品| 中文字幕一区二区三区有限公司 | 久久久久这里只有精品| 亚洲www啪成人一区二区| 欧美日韩爱爱视频| 成人全视频在线观看在线播放高清| 欧美激情久久久久久| 视频一区在线免费看| 97在线观看免费高清| 国产精品日本一区二区三区在线| 日韩av片永久免费网站| 91精品入口| 91丝袜美腿美女视频网站| 欧美美女一区| 精品免费视频123区| 中文在线日韩| 亚洲春色在线| 美女日韩在线中文字幕| 青草青青在线视频| 国产精品77777| 国产色视频在线播放| 久久久噜噜噜久久人人看| 亚洲午夜久久久久久久久| 亚洲精品综合在线| 中文字幕美女视频| 色悠悠亚洲一区二区| 国产性xxxx高清| 欧美成人在线直播| 99视频在线观看免费| 久久这里只有精品视频首页| 欧美在线se| 国产精品旅馆在线| 精品一二三区| 日韩福利视频| 秋霞成人午夜伦在线观看| 成人免费观看视频在线观看| 波波电影院一区二区三区| 亚洲AV成人精品| 亚洲一区二区三区四区在线免费观看| 中文字幕在线有码| 日韩免费在线观看| 99热这里是精品| 九色精品美女在线| 日韩在线成人| 不卡视频一区二区| 亚洲网站视频| 福利视频一二区| 99国产精品久久久久久久久久久| 天堂www中文在线资源| 午夜激情久久久| 精品在线播放视频| 日韩激情第一页| 丁香六月综合| 国产黑人绿帽在线第一区| 成人免费看片39| 一区二区av| 国产精品一级二级三级| av影片在线播放| 亚州成人在线电影| 成人免费视频毛片| 亚洲欧美色图片| 欧美aaaaaa| 91色视频在线导航| 欧美日韩国产高清| 日韩伦理在线免费观看| 91美女在线观看| 少妇愉情理伦三级| 欧美一级夜夜爽| 人妻一区二区三区| 欧美做受高潮电影o| 日韩.com| 成人免费看片视频在线观看| 成人午夜短视频| 九色porny自拍视频| 欧美美女bb生活片| 精品国产无码一区二区| 1769国产精品| 欧美高清在线| 妺妺窝人体色777777| 欧美激情一区不卡| 欧美黑人猛猛猛| 亚洲毛片在线免费观看| av成人在线网站| 国产另类第一区| 美女尤物国产一区| 男男一级淫片免费播放| 欧美性三三影院| 黄色三级网站在线观看| 国产精品wwww| 欧美激情亚洲| 国内外成人免费激情视频| 亚洲视频 欧洲视频| 奇米影视第四色777| 日韩在线视频网站| 免费看成人人体视频| 色综合久久久久久久久五月| 岛国精品在线播放| 日本xxxxxxxxx18| 亚洲高清色综合| 四虎国产精品成人免费影视| 国产亚洲一区二区三区在线播放 | 日韩在线视频导航| 国产精品一线| 中文字幕欧美日韩一区二区三区|