淺析PHP Socket技術(shù)
phpsocketSocket位于TCP/IP協(xié)議的傳輸控制協(xié)議,提供客戶-服務(wù)器模式的異步通信,即客戶向服務(wù)器發(fā)出服務(wù)請(qǐng)求,服務(wù)器接收到請(qǐng)求后,提供相應(yīng)的反饋或服務(wù)!我練習(xí)了一個(gè)最基本的例子:
使用并發(fā)起一個(gè)阻塞式(block)連接,即服務(wù)器如果不返回?cái)?shù)據(jù)流,則一直保持連接狀態(tài),一旦有數(shù)據(jù)流傳入,取得內(nèi)容后就立即斷開連接。代碼如下:
<?php
$host = www.sohu.com; //這個(gè)地址隨便,用新浪的也行,主要是測試用,哪個(gè)無所謂
$page = "/index.html";
$port = 80;
$request = "GET $page HTTP/1.1\r\n";
$request .= "Host: $host\r\n";
//$request .= "Referer:$host\r\n";
$request .= "Connection: close\r\n\r\n";
//允許連接的超時(shí)時(shí)間為1.5秒
$connectionTimeout = 1.5;
//允許遠(yuǎn)程服務(wù)器2秒鐘內(nèi)完成回應(yīng)
$responseTimeout = 2;
//建立一個(gè)socket連接
$fp = fsockopen($host, $port, $errno, $errstr, $connectionTimeout);
if (!$fp) {
throw new Exception("Connection to $hostfailed:$errstr");
} else {
stream_set_blocking($fp, true);
stream_set_timeout($fp, $responseTimeout);
}
//發(fā)送請(qǐng)求字符串
fwrite($fp, $request);
//取得返回的數(shù)據(jù)流內(nèi)容
$content = stream_get_contents($fp);
echo $content;
$meta = stream_get_meta_data($fp);
if ($meta['timed_out']) {
throw new Exception("Responsefrom web services server timed out.");
}
//關(guān)閉Socket連接
fclose($fp);
?>
相關(guān)文章
PHP?array_combine()?函數(shù)內(nèi)置函數(shù)
這篇文章主要介紹了PHP?array_combine()函數(shù)內(nèi)置函數(shù),array_combine()是PHP中的一個(gè)內(nèi)置函數(shù),用于組合兩個(gè)數(shù)組并通過使用一個(gè)數(shù)組作為鍵和另一個(gè)數(shù)組作為值來創(chuàng)建一個(gè)新數(shù)組2022-09-09
編譯PHP報(bào)錯(cuò)configure error Cannot find libmysqlclient under usr的
這篇文章主要介紹了Linux上編譯PHP報(bào)錯(cuò)configure error Cannot find libmysqlclient under usr的解決方法,需要的朋友可以參考下2014-06-06
PHP關(guān)聯(lián)數(shù)組的10個(gè)操作技巧
數(shù)組中的元素都有自己的ID,因此可以方便地訪問它們;關(guān)聯(lián)數(shù)組,它的每個(gè)ID 鍵都關(guān)聯(lián)一個(gè)值;這篇文章將介紹10個(gè)操作PHP關(guān)聯(lián)數(shù)組的技巧,熟練運(yùn)用能幫助你提高開發(fā)效率2013-01-01
用PHP偽造referer突破網(wǎng)盤禁止外連的代碼
一般的國內(nèi)網(wǎng)盤為控制流量,都會(huì)禁止網(wǎng)盤內(nèi)的文件外鏈。點(diǎn)網(wǎng)盤里文件的鏈接一般都會(huì)轉(zhuǎn)到專門的下載頁面,必須從這個(gè)頁面才能下載文件。2008-06-06
PHP 將dataurl轉(zhuǎn)成圖片image方法總結(jié)
這篇文章主要介紹了PHP 將dataurl轉(zhuǎn)成圖片image方法的相關(guān)資料,這里提供了兩種方法及實(shí)現(xiàn)方式,需要的朋友可以參考下2016-10-10

