亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

如何解決PHP無法實現(xiàn)多線程的問題

2020-03-22 20:24:09
字體:
供稿:網(wǎng)友
有沒有辦法在PHP中實現(xiàn)多線程呢?假設(shè)你正在寫一個基于多臺服務(wù)器的PHP應(yīng)用,理想的情況時同時向多臺服務(wù)器發(fā)送請求,而不是一臺接一臺??梢詫崿F(xiàn)嗎?當(dāng)有人想要實現(xiàn)并發(fā)功能時,他們通常會想到用fork或者spawn threads,但是當(dāng)他們發(fā)現(xiàn)PHP不支持多線程的時候,大概會轉(zhuǎn)換思路去用一些不夠好的語言,比如Perl。
假設(shè)你要建立一個服務(wù)來檢查正在運行的n臺服務(wù)器,以確定他們還在正常運轉(zhuǎn)。你可能會寫下面這樣的代碼:$hosts = array("host1.sample.com", "host2.sample.com", "host3.sample.com"); $timeout = 15; $status = array(); foreach ($hosts as $host) { $errno = 0; $errstr = ""; $s = fsockopen($host, 80, $errno, $errstr, $timeout); if ($s) { $status[$host] = "Connectedn"; fwrite($s, "HEAD / HTTP/1.0rnHost: $hostrnrn"); do { $data = fread($s, 8192); if (strlen($data) == 0) { break; $status[$host] .= $data; while (true); fclose($s); else { $status[$host] = "Connection failed: $errno $errstrn"; print_r($status); 它運行的很好,但是在fsockopen()分析完hostname并且建立一個成功的連接(或者延時$timeout秒)之前,擴充這段代碼來管理大量服務(wù)器將耗費很長時間。因此我們必須放棄這段代碼;我們可以建立異步連接-不需要等待fsockopen返回連接狀態(tài)。PHP仍然需要解析hostname(所以直接使用ip更加明智),不過將在打開一個連接之后立刻返回,繼而我們就可以連接下一臺服務(wù)器。有兩種方法可以實現(xiàn);PHP5中可以使用新增的stream_socket_client()函數(shù)直接替換掉fsocketopen()。PHP5之前的版本,你需要自己動手,用sockets擴展解決問題。下面是PHP5中的解決方法:$hosts = array("host1.sample.com", "host2.sample.com", "host3.sample.com"); $timeout = 15; $status = array(); $sockets = array(); /* Initiate connections to all the hosts simultaneously */ foreach ($hosts as $id = $host) { $s = stream_socket_client("$host:80", $errno, $errstr, $timeout, STREAM_CLIENT_ASYNC_CONNECT|STREAM_CLIENT_CONNECT); if ($s) { $sockets[$id] = $s; $status[$id] = "in progress"; else { $status[$id] = "failed, $errno $errstr"; /* Now, wait for the results to come back in */ while (count($sockets)) { $read = $write = $sockets; /* This is the magic function - explained below */ $n = stream_select($read, $write, $e = null, $timeout); if ($n 0) { /* readable sockets either have data for us, or are failed * connection attempts */ foreach ($read as $r) { $id = array_search($r, $sockets); $data = fread($r, 8192); if (strlen($data) == 0) { if ($status[$id] == "in progress") { $status[$id] = "failed to connect"; fclose($r); unset($sockets[$id]); else { $status[$id] .= $data; /* writeable sockets can accept an HTTP request */ foreach ($write as $w) { $id = array_search($w, $sockets); fwrite($w, "HEAD / HTTP/1.0rnHost: " . $hosts[$id] . "rnrn"); $status[$id] = "waiting for response"; else { /* timed out waiting; assume that all hosts associated * with $sockets are faulty */ foreach ($sockets as $id = $s) { $status[$id] = "timed out " . $status[$id]; break; foreach ($hosts as $id = $host) { echo "Host: $hostn"; echo "Status: " . $status[$id] . "nn"; 我們用stream_select()等待sockets打開的連接事件。stream_select()調(diào)用系統(tǒng)的select(2)函數(shù)來工 作:前面三個參數(shù)是你要使用的streams的數(shù)組;你可以對其讀取,寫入和獲取異常(分別針對三個參數(shù))。stream_select()可以通過設(shè) 置$timeout(秒)參數(shù)來等待事件發(fā)生-事件發(fā)生時,相應(yīng)的sockets數(shù)據(jù)將寫入你傳入的參數(shù)。下面是PHP4.1.0之后版本的實現(xiàn),如果你已經(jīng)在編譯PHP時包含了sockets(ext/sockets)支持,你可以使用根上面類似的代 碼,只是需要將上面的streams/filesystem函數(shù)的功能用ext/sockets函數(shù)實現(xiàn)。主要的不同在于我們用下面的函數(shù)代替 stream_socket_client()來建立連接:// This html' target='_blank'>value is correct for Linux, other systems have other values define('EINPROGRESS', 115); function non_blocking_connect($host, $port, &$errno, &$errstr, $timeout) { $ip = gethostbyname($host); $s = socket_create(AF_INET, SOCK_STREAM, 0); if (socket_set_nonblock($s)) { $r = @socket_connect($s, $ip, $port); if ($r || socket_last_error() == EINPROGRESS) { $errno = EINPROGRESS; return $s; $errno = socket_last_error($s); $errstr = socket_strerror($errno); socket_close($s); return false; 現(xiàn)在用socket_select()替換掉stream_select(),用socket_read()替換掉fread(),用socket_write()替換掉fwrite(),用socket_close()替換掉fclose()就可以執(zhí)行腳本了!
PHP5的先進之處在于,你可以用stream_select()處理幾乎所有的stream。例如你可以通過include STDIN用它接收鍵盤輸入并保存進數(shù)組,你還可以接收通過proc_open()打開的管道中的數(shù)據(jù)。希望通過這篇文章,大家可以巧妙解決PHP無法實現(xiàn)多線程的問題。PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产成人精品无码片区在线| √天堂8在线网| 国产玉足榨精视频在线观看| 欧美日韩激情视频在线观看| 激情综合激情| 男人操女人动态图| 日韩成人午夜影院| 亚洲乱码国产乱码精品精天堂| 亚洲国产无码精品| 亚洲国产婷婷| 亚洲成人综合视频| 四虎影视在线播放| 国产夫妻自拍一区| xvideos亚洲| 亚洲精品乱码久久久久久蜜桃动漫| 亚洲视频在线观看一区二区三区| 国产精品xxxx| 亚洲色图二区| 久久免费影院| 蜜桃视频涩涩| 久久中文字幕无码| 免费观看成人在线| 日本不卡视频一二三区| 国产一区不卡在线| 素人一区二区三区| 亚洲女人被黑人巨大进入| 91亚洲精品一区二区乱码| 久久这里只有精品首页| 亚洲精品在线91| 俄罗斯男人又粗又大| seba5欧美综合另类| 色嗨嗨av一区二区三区| 国产一区清纯| 加勒比成人在线| 久久综合av| 超碰成人免费在线| 亚洲欧洲激情在线乱码蜜桃| 国内精品**久久毛片app| 久久久久看片| 日本中文字幕在线一区| 91精品国产综合久久精品app| 91国内精品在线视频| 亚洲欧美日韩国产综合精品二区| 涩涩网在线视频| 中文字幕一区二区三区在线乱码| av中文字幕在线观看第一页| 一区二区三区www| 人妻熟妇乱又伦精品视频| 日日骚av一区二区| 久久久久久无码精品人妻一区二区| 先锋在线资源一区二区三区| 1区1区3区4区产品乱码芒果精品| 国产一级视频在线播放| 自拍视频国产精品| 亚州男人的天堂| 国产sm精品调教视频网站| 国产日韩欧美综合精品| 国产美女一区二区三区| 视频一区二区三区不卡| 久久精品一区二区三区不卡免费视频| 国产一区二区三区朝在线观看| 亚洲日韩成人| 亚洲一区精品在线观看| 午夜视频在线观看网站| 国产美女免费网站| 久久先锋资源| 日韩黄色免费电影| 亚洲精品视频免费| 日韩久久精品一区| 蜜臀av性久久久久蜜臀av麻豆| 欧美极品少妇xxxxⅹ喷水| 天涯成人国产亚洲精品一区av| 国产精品普通话对白| 国产精品久久久久久在线观看| freexxxx性特大另类| 国产欧美日韩精品一区二区三区| 亚洲欧洲一区二区三区久久| 国产一级大片在线观看| 视频在线你懂的| 国产精品亚洲午夜一区二区三区| 亚洲综合网站| 日本一区二区在线播放| 亚洲视频高清| 国产精品日韩av| 亚洲视频网在线直播| 日本19禁啪啪吃奶大尺度| 日韩av综合网站| 国产98在线|日韩| 亚洲精品国产综合久久| 日本在线高清视频一区| 久久视频在线观看| 性猛交富婆╳xxx乱大交一| 水蜜桃在线视频| 91看片在线| 国产日产精品一区二区三区四区| 中文有码在线| 神马久久精品| 韩日中文字幕| 国产老妇另类xxxxx| 日本不卡视频在线| 日韩有吗在线观看| 黑料吃瓜在线观看| 日韩欧美亚洲一二三区| 欧美日韩麻豆| 亚洲在线视频免费观看| 青青青手机在线视频| 国产va免费精品观看精品| 国产欧美 在线欧美| 成人免费观看a| 亚洲免费在线电影| 国产又黄又爽又色| 精品一区二区在线免费观看| 国产在线免费看| 天天影视色综合| 成人做爽爽免费视频| 亚洲1区在线| 久久精品国产69国产精品亚洲| 国产成人精品亚洲777人妖| 国产精品久久无码| 久久不见久久见免费视频7| 亚洲国产精品ⅴa在线观看| 欧美高清xxxxxkkkkk| 性伦欧美刺激片在线观看| 精品欧美在线观看| 久久久久久久久久久97| 欧美a级片视频| 欧美性猛交xxxx免费看| 国产精品三区在线观看| 久久五月精品中文字幕| 久久香蕉视频网站| 亚洲最大福利视频| 中文字幕三区| 成人三级视频在线观看一区二区| 国产精品无码一区二区三区| 国内精品久久久久久久影视简单| 日本少妇一级片| 亚洲免费激情| 亚洲国产精品久久久天堂| 黄色网络在线观看| 日韩国产在线观看| 九色porny91| 91国模大尺度私拍在线视频| 欧美一级日韩不卡播放免费| 精品久久国产97色综合| 国产玉足脚交久久欧美| 成人自拍视频在线观看| 麻豆精品久久| 欧美一级视频在线播放| 国产农村老头老太视频| 国产精品视频一二| 亚洲三级毛片| 日本三级免费看| 97在线视频免费观看| 国产精品秘入口| ww久久综合久中文字幕| 婷婷激情图片久久| 成人国产精品色哟哟| 黄色免费视频观看| 久久久久99精品成人片毛片| 蜜臀av在线播放| 欧美一级做一级爱a做片性| 在线视频欧美一区| 波多野结衣办公室双飞| 色妞欧美日韩在线| 日韩激情一区| 亚洲成av人片一区二区三区| 国产精品理论在线观看| 久久精品香蕉视频| 国产欧美 在线欧美| 欧美日韩三区| 久久电影天堂| 成人国产精品入口免费视频| 老太做爰xxxx| 欧美久久99| 国产精品综合一区二区| 亚洲一二三精品| 日韩亚洲精品视频| 日韩精品一区二区三区四| 给我免费观看片在线电影的| 鲁丝一区鲁丝二区鲁丝三区| 国产成人精品无码片区在线| 国产日产欧美a一级在线| 亚洲精品成人悠悠色影视| 羞羞影视羞羞在线| 成年人网站国产| 最新日韩中文字幕| 亚洲三级影院| 日韩国产大片| 国产aⅴ2021| 国产亚洲久久| 日韩一区二区三区四区在线| 国产精品久久久久久久久久小说| 久久99精品一区二区三区三区| 日本不卡一二三| 九九热线有精品视频99| 日本一区二区免费看| 成人一区二区三区在线观看| 天堂av在线网| 国产精品一级无码| 黄漫在线观看| 三级黄在线播放| 免费成人在线观看视频| 国模 一区 二区 三区| 香蕉521av成人网| 成人av男人的天堂| 精品视频99| 夜夜操天天干| 国产一二三四在线| 欧美又大又粗又长| 国产亚洲精品一区二区在线观看| 中文乱码免费一区二区| 一级成人黄色片| 黑人と日本人の交わりビデオ| 国产在线观看91一区二区三区| 国产中文字幕精品| av一本久道久久波多野结衣| 国产又粗又猛又黄又爽| 亚洲视频图片小说| 欧美特黄aaa| 韩国精品美女www爽爽爽视频| 成人在线视频网| 欧美美女视频在线观看| 亚洲精品**不卡在线播he| 久久99性xxx老妇胖精品| 国产第一亚洲| 欧美精品在线视频观看| 中文字幕jux大岛优香| 欧美电影影音先锋| 国产二区三区在线| 91久久久亚洲精品| 美女又黄又免费| 亚洲免费一级片| 日韩高清一区在线| 午夜剧场免费看| 踪合国产第二页| 久久日韩精品一区二区五区| 亚洲免费一级视频| 亚洲天堂av资源在线观看| 欧美久久综合| 在线播放evaelfie极品| 综合欧美精品| 欧美xxxhd| 中文字幕免费视频观看| 成人一区二区av| 毛片手机在线观看| а√中文在线资源库| 成人av电影免费在线播放| 亚洲成人黄色在线| 色哟哟精品一区| 色综合久久九月婷婷色综合| 高清电影在线免费观看| 日本不卡一区二区在线观看| 黄瓜视频免费观看在线观看www| 色尼玛亚洲综合影院| 成人三级黄色免费网站| 国产精品夜夜夜爽阿娇| 亚洲综合网站久久久| 久久影院午夜论| 91久热免费在线视频| 狠狠躁夜夜躁人人爽视频| 日韩av免费在线| 亚洲一区二区精品视频| 99久热在线精品视频观看| 美女隐私在线观看| 国产超级va在线视频| 久久国产精品免费一区二区三区| 国产精品视频在线免费观看| www.91在线观看| 日韩av大片站长工具| 成人小视频在线观看| 很黄很色网站| 午夜国产欧美理论在线播放| 国产精品一区二区三区美女| 懂色中文一区二区三区在线视频| 日韩久久免费av| 国产精品人人爽人人爽| 国产丝袜精品视频| 成人毛片视频网站| 凹凸成人精品亚洲精品密奴| 免费在线黄色av| 中文人妻熟女乱又乱精品| 亚洲欧美一级二级三级| 亚洲一区二区三区四区中文| 亚洲精品白浆高清| 欧美午夜精品一区二区蜜桃| 亚洲国产日韩精品| 玖玖玖免费嫩草在线影院一区| 亚洲国产欧美国产综合一区| 在线成人精品视频| 成人h动漫精品一区二区| 草莓视频末满18勿| 久久久久亚洲av成人网人人软件| 在线看av的网址| 国产毛片精品国产一区二区三区| 日本不卡一二三区黄网| 久久这里有精品15一区二区三区| 大香伊人久久精品一区二区| 欧美成人a∨高清免费观看| 久久国产高清| 久久久久久久网| 人妻精品无码一区二区| 欧美精品观看| 国产成人精品免费视频大全最热| 日本道在线观看一区二区| 国产精选在线视频拍拍拍| 中文字幕在线看视频国产欧美在线看完整| 午夜亚洲福利老司机| 中文另类视频| 在线成人综合色一区| 中文字幕亚洲综合久久五月天色无吗''| 欧美影院视频| 国产亚洲精品中文字幕| 欧美日韩在线视频播放| 日韩和欧美一区二区三区| 国产在线视频一区| 亚洲少妇最新在线视频| 色的视频在线免费看| 欧美一区二区三区艳史| 国产精品综合av一区二区国产馆| 狠狠狠色丁香婷婷综合激情| 国产精品亲子伦对白| 欧美中文在线观看| 成人综合久久网| 91成人在线精品| www.在线播放| 欧美另类精品xxxx孕妇| 最近中文字幕mv免费高清在线| 国产亚洲精品自在线观看|