PHP多線程的實現(xiàn)方法詳解

PHP多線程的實現(xiàn)方法詳解

ID:39467257

大?。?1.00 KB

頁數(shù):11頁

時間:2019-07-04

PHP多線程的實現(xiàn)方法詳解_第1頁
PHP多線程的實現(xiàn)方法詳解_第2頁
PHP多線程的實現(xiàn)方法詳解_第3頁
PHP多線程的實現(xiàn)方法詳解_第4頁
PHP多線程的實現(xiàn)方法詳解_第5頁
資源描述:

《PHP多線程的實現(xiàn)方法詳解》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。

1、PHP多線程的實現(xiàn)方法詳解多線程是java中一個很不錯的東西,很多朋友說在php中不可以使用PHP多線程了,其實那是錯誤的說法PHP多線程實現(xiàn)方法和fsockopen函數(shù)有關,下面我們來介紹具體實現(xiàn)程序代碼,有需要了解的同學可參考。當有人想要實現(xiàn)并發(fā)功能時,他們通常會想到用fork或者spawnthreads,但是當他們發(fā)現(xiàn)php不支持多線程的時候,大概會轉(zhuǎn)換思路去用一些不夠好的語言,比如perl。其實的是大多數(shù)情況下,你大可不必使用fork或者線程,并且你會得到比用fork或thread更好的性能。假設你要建立一個服務來檢查正

2、在運行的n臺服務器,以確定他們還在正常運轉(zhuǎn)。你可能會寫下面這樣的代碼:?代碼如下復制代碼

3、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]="Connectionfailed:$errno$errstrn";?}}print_r($status);?>?它運行的很好,但是在fsockopen(

4、)分析完hostname并且建立一個成功的連接(或者延時$timeout秒)之前,擴充這段代碼來管理大量服務器將耗費很長時間。因此我們必須放棄這段代碼;我們可以建立異步連接-不需要等待fsockopen返回連接狀態(tài)。PHP仍然需要解析hostname(所以直接使用ip更加明智),不過將在打開一個連接之后立刻返回,繼而我們就可以連接下一臺服務器。有兩種方法可以實現(xiàn);PHP5中可以使用新增的stream_socket_client()函數(shù)直接替換掉fsocketopen()。PHP5之前的版本,你需要自己動手,用sockets擴展解

5、決問題。下面是PHP5中的解決方法:它運行的很好,但是在fsockopen()分析完hostname并且建立一個成功的連接(或者延時$timeout秒)之前,擴充這段代碼來管理大量服務器將耗費很長時間。因此我們必須放棄這段代碼;我們可以建立異步連接-不需要等待fsockopen返回連接狀態(tài)。PHP仍然需要解析hostname(所以直接使用ip更加明智),不過將在打開一個連接之后立刻返回,繼而我們就可以連接下一臺服務器。有兩種方法可以實現(xiàn);PHP5中可以使用新增的stream_socket_client()函數(shù)直接替換掉fsock

6、etopen()。PHP5之前的版本,你需要自己動手,用sockets擴展解決問題。下面是PHP5中的解決方法:?代碼如下復制代碼$host){?$s

7、=stream_socket_client("$$host:80",$errno,$errstr,$timeout,?STREAM_CLIENT_ASYNC_CONNECT

8、STREAM_CLIENT_CONNECT);?if($s){?$sockets[$id]=$s;?$status[$id]="inprogress";?}else{?$status[$id]="failed,$errno$errstr";?}}/*Now,waitfortheresultstocomebackin*/while(count($sockets

9、)){?$read=$write=$sockets;?/*Thisisthemagicfunction-explainedbelow*/?$n=stream_select($read,$write,$e=null,$timeout);?if($n>0){?/*r

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。