www夜片内射视频日韩精品成人_男人添女人下面高潮视频_57pao国产成永久免费视频_亚洲欧美激情国产综合久久久_亚洲国产成人精品综合99_搡的我好爽在线观看免费视频_波多野结衣大片_亚洲产国偷v产偷v自拍涩爱_精品国精品国产自在久不卡_色av性av丰满av

首頁 > 職業(yè)資格  > 

PHP多線程的實(shí)現(xiàn)方法

2023-05-23   來源:萬能知識(shí)網(wǎng)

PHP多線程的實(shí)現(xiàn)方法


(資料圖)

多線程是java中一個(gè)很不錯(cuò)的東西,很多朋友說在php中不可以使用PHP多線程了,其實(shí)那是錯(cuò)誤的說法PHP多線程實(shí)現(xiàn)方法和fsockopen函數(shù)有關(guān),下面我們來介紹具體實(shí)現(xiàn)程序代碼,有需要了解的同學(xué)可參考。

當(dāng)有人想要實(shí)現(xiàn)并發(fā)功能時(shí),他們通常會(huì)想到用fork或者spawn threads,但是當(dāng)他們發(fā)現(xiàn)php不支持多線程的時(shí)候,大概會(huì)轉(zhuǎn)換思路去用一些不夠好的語言,比如perl。

其實(shí)的是大多數(shù)情況下,你大可不必使用 fork 或者線程,并且你會(huì)得到比用 fork 或 thread 更好的性能。

假設(shè)你要建立一個(gè)服務(wù)來檢查正在運(yùn)行的n臺(tái)服務(wù)器,以確定他們還在正常運(yùn)轉(zhuǎn)。你可能會(huì)寫下面這樣的代碼:

代碼如下

$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);

?>

它運(yùn)行的很好,但是在fsockopen()分析完hostname并且建立一個(gè)成功的連接(或者延時(shí)$timeout秒)之前,擴(kuò)充這段代碼來管理大量服務(wù)器將耗費(fèi)很長(zhǎng)時(shí)間。

因此我們必須放棄這段代碼;我們可以建立異步連接-不需要等待fsockopen返回連接狀態(tài)。PHP仍然需要解析hostname(所以直接使用ip更加明智),不過將在打開一個(gè)連接之后立刻返回,繼而我們就可以連接下一臺(tái)服務(wù)器。

有兩種方法可以實(shí)現(xiàn);PHP5中可以使用新增的stream_socket_client()函數(shù)直接替換掉fsocketopen()。PHP5之前的版本,你需要自己動(dòng)手,用sockets擴(kuò)展解決問題。

下面是PHP5中的解決方法:

它運(yùn)行的很好,但是在fsockopen()分析完hostname并且建立一個(gè)成功的連接(或者延時(shí)$timeout秒)之前,擴(kuò)充這段代碼來管理大量服務(wù)器將耗費(fèi)很長(zhǎng)時(shí)間。

因此我們必須放棄這段代碼;我們可以建立異步連接-不需要等待fsockopen返回連接狀態(tài)。PHP仍然需要解析hostname(所以直接使用ip更加明智),不過將在打開一個(gè)連接之后立刻返回,繼而我們就可以連接下一臺(tái)服務(wù)器。

有兩種方法可以實(shí)現(xiàn);PHP5中可以使用新增的.stream_socket_client()函數(shù)直接替換掉fsocketopen()。PHP5之前的版本,你需要自己動(dòng)手,用sockets擴(kuò)展解決問題。

下面是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ù)來工作:前面三個(gè)參數(shù)是你要使用的streams的數(shù)組;你可以對(duì)其讀取,寫入和獲取異常(分別針對(duì)三個(gè)參數(shù))。stream_select()可以通過設(shè)置$timeout(秒)參數(shù)來等待事件發(fā)生-事件發(fā)生時(shí),相應(yīng)的sockets數(shù)據(jù)將寫入你傳入的參數(shù)。

下面是PHP4.1.0之后版本的實(shí)現(xiàn),如果你已經(jīng)在編譯PHP時(shí)包含了sockets(ext/sockets)支持,你可以使用根上面類似的代碼,只是需要將上面的streams/filesystem函數(shù)的功能用ext/sockets函數(shù)實(shí)現(xiàn)。主要的不同在于我們用下面的函數(shù)代替stream_socket_client()來建立連接:

代碼如下

// This 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的先進(jìn)之處在于,你可以用stream_select()處理幾乎所有的stream-例如你可以通過include STDIN用它接收鍵盤輸入并保存進(jìn)數(shù)組,你還可以接收通過proc_open()打開的管道中的數(shù)據(jù)。

下面來分享一個(gè)PHP多線程類

代碼如下

* @title: PHP多線程類(Thread)

* @version: 1.0

* @author: phper.org.cn < web@phper.org.cn >

* @published: 2010-11-2

*

* PHP多線程應(yīng)用示例:

* require_once "thread.class.php";

* $thread = new thread();

* $thread->addthread("action_log","a");

* $thread->addthread("action_log","b");

* $thread->addthread("action_log","c");

* $thread->runthread();

*

* function action_log($info) {

* $log = "log/" . microtime() . ".log";

* $txt = $info . "rnrn" . "Set in " . Date("h:i:s", time()) . (double)microtime() . "rn";

* $fp = fopen($log, "w");

* fwrite($fp, $txt);

* fclose($fp);

* }

*/

class thread {

var $hooks = array();

var $args = array();

function thread() {

}

function addthread($func)

{

$args = array_slice(func_get_args(), 1);

$this->hooks[] = $func;

$this->args[] = $args;

return true;

}

function runthread()

{

if(isset($_GET["flag"]))

{

$flag = intval($_GET["flag"]);

}

if($flag || $flag === 0)

{

call_user_func_array($this->hooks[$flag], $this->args[$flag]);

}

else

{

for($i = 0, $size = count($this->hooks); $i < $size; $i++)

{

$fp=fsockopen($_SERVER["HTTP_HOST"],$_SERVER["SERVER_PORT"]);

if($fp)

{

$out = "GET {$_SERVER["PHP_SELF"]}?flag=$i HTTP/1.1rn";

$out .= "Host: {$_SERVER["HTTP_HOST"]}rn";

$out .= "Connection: Closernrn";

fputs($fp,$out);

fclose($fp);

}

}

}

}

}

詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。

標(biāo)簽

多線程

推薦詞條

久草视频福利在线| 伊人久久亚洲综合| 中文字幕一区二区人妻电影丶| 丝袜人妻一区二区三区| 99久久精品日本一区二区免费| 国产高潮国产高潮久久久91| 天堂网免费视频| 国产91av视频在线观看| 中文字幕av网站| 99色这里只有精品| 黄色一级a毛片| 成年人免费大片| 久久国产劲爆∧v内射| 婷婷激情四射五月天| 一区二区免费在线观看视频| caoporm在线视频| 少妇av片在线观看| 中文字幕精品无码一区二区| 丰满女人性猛交| 99久久夜色精品国产亚洲| 欧美深夜福利视频| a级大片免费看| 在线免费黄色小视频| 九九热免费在线| 一级特黄特色的免费大片视频| 国产精品一线二线三线| 午夜激情在线视频| 欧美另类视频在线观看| 精品国产欧美日韩不卡在线观看| 亚洲网站免费观看| 三年中国国语在线播放免费| 国产又粗又长又爽| 日日夜夜狠狠操| 久在线观看视频| 成人区人妻精品一区二| 无码人妻av免费一区二区三区| 永久免费网站视频在线观看| 伦伦影院午夜理论片| 日本少妇毛茸茸高潮| 日韩精品一区二区在线视频| 欧美激情一区二区三区p站| 欧美三级韩国三级日本三斤在线观看| 日韩国产精品毛片| 日本wwwwwww| 蜜臀精品一区二区三区| 亚洲精品乱码久久久久久自慰| 亚洲av片不卡无码久久| 一级成人免费视频| 在线能看的av网站| 熟女视频一区二区三区| www男人天堂| 国产乱码77777777| 日本中文字幕精品—区二区| 免费国产羞羞网站美图| 91亚洲一线产区二线产区| 中文字幕高清在线免费播放| 男女午夜激情视频| 精品人妻伦九区久久aaa片| 天天干,夜夜爽| 波多野结衣一本一道| jizz欧美性11| 国产真实老熟女无套内射| 亚洲精品视频久久久| 精品久久久中文字幕人妻| 国产极品在线播放| 色七七在线观看| 路边理发店露脸熟妇泻火| 午夜激情影院在线观看| 日韩欧美大片在线观看| 中文av字幕在线观看| 亚洲 欧美 中文字幕| 日韩一级免费在线观看| 男人的天堂久久久| free性中国hd国语露脸| 草草视频在线播放| 无码人妻久久一区二区三区| 在线a免费观看| 9色porny| 免费成人进口网站| xxxx日本黄色| 大乳护士喂奶hd| 亚洲欧美黄色片| 一区二区视频免费| 国产精品久久久免费视频| 午夜在线视频免费| 91肉色超薄丝袜脚交一区二区| 日韩欧美大片在线观看| 超碰人人草人人| 久热免费在线观看| 草草视频在线免费观看| 国产免费xxx| 中文字幕无码日韩专区免费| 国产熟妇搡bbbb搡bbbb| 超碰caoprom| 婷婷在线免费观看| 亚洲高清视频在线播放| 国产免费久久久| 中文字幕乱码在线观看| 国产一级免费视频| 亚洲免费激情视频| 毛片a片免费观看| 黄色小视频免费网站| 激情综合网俺也去| 丰满人妻中伦妇伦精品app| 成年人深夜视频| 午夜在线视频免费观看| 91无套直看片红桃在线观看| 国产 日韩 欧美 综合| 在线观看视频二区| 中文字幕精品三级久久久| www.日本在线视频| 国产高潮在线观看| 老熟妇高潮一区二区高清视频| 美女又爽又黄视频毛茸茸| 国产精品成人免费观看| 爱情岛论坛亚洲首页入口章节| 在线观看日本视频| 亚洲 欧美 自拍偷拍| 中文字幕黄色网址| 国产精品无码专区av在线播放| 国产精品第9页| 香蕉久久一区二区三区| 成人做爰视频网站| wwwwwxxxx日本| 97人妻精品一区二区三区软件| 少妇饥渴放荡91麻豆| 免费特级黄色片| 日韩女同强女同hd| 中国老熟女重囗味hdxx| 欧洲精品视频在线| 精品无码久久久久| 午夜视频1000| 亚洲av无码一区二区三区在线| 色婷婷综合网站| 国产精品视频一二区| 人人爽人人爽人人片| 欧美精品第三页| 亚洲一区二区三区网站| 久久久久久久毛片| 亚洲一级免费观看| 亚洲黄色一级大片| 超碰免费在线公开| 国产精品1000| 佐佐木明希电影| 香港三级韩国三级日本三级| 国产性生活视频| 午夜理伦三级做爰电影| 欧美成人黄色网址| 性一交一乱一伧老太| 亚洲小说欧美另类激情| 91蜜桃视频在线观看| 在线精品一区二区三区| avav在线看| www.五月婷婷| 午夜av入18在线| 你懂的国产视频| 玖玖爱在线观看| 国产精品一区二区羞羞答答| a天堂中文在线观看| 国产精品白嫩白嫩大学美女| 中文字幕在线字幕中文| 日本黄色动态图| 国产av人人夜夜澡人人爽| 国产情侣在线播放| 97超碰人人爱| 极品国产91在线网站| 久久久精品成人| 亚洲av毛片在线观看| 久久久国产精品久久久| 日韩中文字幕组| 国产91免费在线观看| 久久国产精品网| 一级黄色大片免费观看| 日本老太婆做爰视频| 在线免费一区二区| 校园春色 亚洲| 成人小视频在线播放| 国产在线一卡二卡| 中文在线资源天堂| 2021狠狠干| 伊人网av在线| www.69av| 国产又粗又猛又黄又爽| 国产精品久久国产| 国产成人精品无码高潮| a级黄色一级片| 特黄视频在线观看| 人妻丰满熟妇av无码区app| 日本一区二区三区在线免费观看| 国产激情在线观看视频| 台湾佬美性中文| 久久久久久久久久毛片| 日本aaa视频| 国产一级18片视频| 9l视频自拍9l视频自拍| h狠狠躁死你h高h| 欧美黑人经典片免费观看| 亚洲精品国产精| 国产免费视频传媒| 欧美熟妇精品黑人巨大一二三区| 久久精品www人人爽人人| 亚洲天堂岛国片| 国产性生活视频| 成年在线观看视频| 免费看av毛片| 色网站在线视频| 91资源在线播放| 中文字幕在线播出| 日韩av综合在线观看| 久久久久久久穴| 欧美一级高潮片| 欧美一级免费在线观看| 人人妻人人澡人人爽精品日本 | 免费在线观看毛片网站| 久久一区二区电影| 亚洲精品中文字幕乱码三区91| 日韩视频 中文字幕| 色婷婷av一区二区三区之e本道| 超碰在线公开97| 一级黄色录像毛片| 999av视频| 在线观看国产福利| 爱爱视频免费在线观看| 国产99久久九九精品无码免费| 成人在线激情网| 波多野吉衣中文字幕| 中文字幕有码无码人妻av蜜桃| 动漫av网站免费观看| 水蜜桃av无码| 中文字幕欧美在线观看| 国产无套粉嫩白浆内谢的出处| 播金莲一级淫片aaaaaaa| 国产91精品一区| 日韩xxxxxxxxx| 亚洲精品乱码久久久久久自慰| 精品黑人一区二区三区| 欧美日韩一级在线观看| 国产精品久久..4399| 动漫美女无遮挡免费| 一级黄色免费网站| 久无码久无码av无码| 免费的av网站| 91亚洲精品国偷拍自产在线观看| 午夜在线观看av| 国产精品99久久久久久大便| 好吊操视频这里只有精品| 无码人妻精品一区二区三区9厂 | 亚洲天堂视频网站| www在线观看免费视频| 久久久久久无码精品大片| 日韩黄色片视频| 日本黄色录像视频| 337p日本欧洲亚洲大胆张筱雨| 国产传媒在线看| 天天躁日日躁狠狠躁喷水| 国产精久久久久久| 欧美污视频网站| 少妇aaaaa| 免费中文字幕av| 精品国产亚洲一区二区麻豆| 国产精选第一页| 国产成人精品无码播放| 日本特级黄色大片| 久久久久亚洲av无码专区桃色| 亚洲精品国偷拍自产在线观看蜜桃 | 人妻无码一区二区三区| 少妇极品熟妇人妻无码| 92看片淫黄大片一级| 国产传媒免费在线观看| 91视频在线免费| 国产高潮在线观看| 波多野结衣高清在线| 人妻av中文系列| 在线免费黄色小视频| 国产无套在线观看| 日本一区二区视频在线播放| 日韩久久久久久久久久久| 国产一区二区视频免费观看| 四虎永久在线精品| 久久久久久综合网| 成人午夜福利视频| 懂色av成人一区二区三区| 激情成人在线观看| 波多野结衣作品集| 日本精品久久久久久久久久| 日韩 欧美 自拍| 三级黄色在线观看| 无码 人妻 在线 视频| 亚洲精品第二页| 性xxxx视频| 人妻va精品va欧美va| 国产欧美日韩成人| 亚洲在线观看av| 最新中文字幕免费| 无码人妻久久一区二区三区| 成人免费区一区二区三区| 黄页网站免费观看| 免费一级肉体全黄毛片| 中文字幕成人免费视频| 亚洲欧美aaa| 日本中文字幕二区| 日本高清一区二区视频| 91极品视频在线观看| 亚洲综合av在线播放| 五月婷婷之综合激情| 91热这里只有精品| 国内自拍视频网| 精品久久久99| 三日本三级少妇三级99| 欧美国产日韩综合| 国产在线拍揄自揄拍| 久久久久久久久影院| 制服.丝袜.亚洲.中文.综合懂色| 成人免费看片98欧美| 天天操天天摸天天干| 免费黄色小视频在线观看| 国产精品国产精品国产| 一级二级三级视频| 99精品在线视频观看| 黄色aaa大片| 污污免费在线观看| 37p粉嫩大胆色噜噜噜| 少妇av片在线观看| 免费高清在线观看电视| 日本老太婆做爰视频| 免费毛片网站在线观看| 久久精品国产精品亚洲色婷婷| 波多野结衣天堂| 91网址在线观看精品| 日本午夜精品理论片a级app发布| 日韩一区二区视频在线| 中文无码av一区二区三区| 国产三级视频在线播放| 无码国产色欲xxxx视频| 四季av日韩精品一区| 青青青国产在线 | 精品爆乳一区二区三区无码av| 亚洲日本黄色片| 日韩字幕在线观看| 亚洲中文无码av在线| 99久久国产免费| 男人天堂网视频| www.国产福利| 亚洲欧美一区二区三区在线观看| 亚洲视频在线观看一区二区 | 中文在线字幕观看| 午夜精产品一区二区在线观看的| 国产人与禽zoz0性伦| 日韩成人三级视频| 久久国产激情视频| 一区二区三区在线观看av| 国产99对白在线播放| 黄色录像a级片| 农村黄色一级片| 黑人糟蹋人妻hd中文字幕| 992kp免费看片| 精品国产欧美日韩不卡在线观看| 天堂在线视频观看| 超碰97av在线| 美国黄色片视频| 国产曰肥老太婆无遮挡| 在线视频观看一区二区| 国产免费www| 国内自拍偷拍视频| 久久99久久99精品免费看小说| 国产97在线 | 亚洲| 久久精品www人人爽人人| 国产欧美久久久精品免费| 国产伦精品一区二区免费| 懂色av粉嫩av蜜臀av| 三级a三级三级三级a十八发禁止| 毛片基地在线观看| 香蕉久久一区二区三区| 少妇高潮一区二区三区喷水| 国产午夜大地久久| 欧美bbbbbbbbbbbb精品| 日本r级电影在线观看| 四虎影成人精品a片| 被灌满精子的波多野结衣| 欧美黄色一级网站| 亚洲免费国产视频| 懂色av粉嫩av浪潮av| 成人观看免费完整观看| 久久精品久久久久久久| 中文在线观看免费视频| 激情成人开心网| aaa级黄色片| 新91视频在线观看| 波多野结衣乳巨码无在线| 日韩欧美三级视频| 永久免费未满蜜桃| 欧美中日韩在线| 亚洲日本视频在线观看| 亚洲AV成人精品| 国产一线二线三线女| 国产午夜性春猛交ⅹxxx| 中文字幕第九页| 久久久久久久久久久视频| 国产精品免费无遮挡无码永久视频| 熟妇高潮一区二区|