国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > PHP > 正文

PHP web開發HTTP協議中的KeepAlive

2020-03-24 17:02:19
字體:
來源:轉載
供稿:網友
這篇文章已經寫完將近一年了,最近從歷史郵件里面翻出來,和大家分享一下。其中使用PHP實現持久的HTTP連接,讓我費了很多心思。曾經想過使用C語言編寫一個PHP的擴展來實現,后來發現pfsockopen這個函數,讓我豁然開朗,避免重新發明一個輪子,呵呵。一,KeepAlive的概念:參見 http://en.wikipedia.org/wiki/HTTP_persistent_connection二,KeepAlive的客戶端實現:使用了PHP支持的 pfsockopen 來實現,參見:http://cn.php.net/pfsockopenKeepAlive必要的Header有:Connection: Keep-Alive
Content-Length: xxx三,性能對比測試:幾種對比實現方式:1,使用fsockopen來實現,讀取body內容后,關閉連接,參見測試程序中的ohttp_get實現。
2,使用pfsockopen來實現,讀取body內容后,不關閉連接,參見測試程序中的phttp_get實現。
3,php實現的file_get_contents
4,第三方測試工具ab前三種測試在測試程序中都包含了。測試用例 一:前三種php實現的客戶端單進程單線程請求lighttpd服務器一個16字節的靜態文件。順序請求10000次。
客戶端與服務器部署在不同服務器,通過內網請求。測試結果:第一次:[root@localhost ~]# /opt/bin/php tp.php
phttp_get: 5.3641529083252
ohttp_get: 8.1628580093384
file_get_contents: 12.217950105667第二次:[root@localhost ~]# /opt/bin/php tp.php
phttp_get: 5.033059835434
ohttp_get: 9.589075088501
file_get_contents: 12.775387048721第三次:[root@localhost ~]# /opt/bin/php tp.php
phttp_get: 5.0181269645691
ohttp_get: 8.2286441326141
file_get_contents: 11.089616060257測試用例 二:使用第三方工具ab來進行測試,-k參數開打開keepalive支持,不做并發測試,順序請求10000次。
客戶端與服務器部署在不同服務器,通過內網請求。以下測試結果部分省略:未打開keepalive:[root@localhost ~]# ab -n 10000 -c 1 http://10.69.2.206:8080/sms/ns2/save_msg.txt Finished 10000 requestsConcurrency Level: 1
Time taken for tests: 10.410467 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 2480000 bytes
HTML transferred: 160000 bytes
Requests per second: 960.57 [#/sec] (mean)
Time per request: 1.041 [ms] (mean)
Time per request: 1.041 [ms] (mean, across all conhtml' target='_blank'>current requests)
Transfer rate: 232.55 [Kbytes/sec] receivedConnection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 30.0 0 3002
Processing: 0 0 0.4 0 9
Waiting: 0 0 0.3 0 9
Total: 0 0 30.0 0 3003打開keepalive:[root@localhost ~]# ab -k -n 10000 -c 1 http://10.69.2.206:8080/sms/ns2/save_msg.txt Finished 10000 requestsConcurrency Level: 1
Time taken for tests: 4.148619 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 9412
Total transferred: 2527060 bytes
HTML transferred: 160000 bytes
Requests per second: 2410.44 [#/sec] (mean)
Time per request: 0.415 [ms] (mean)
Time per request: 0.415 [ms] (mean, across all concurrent requests)
Transfer rate: 594.66 [Kbytes/sec] receivedConnection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 5
Processing: 0 0 2.1 0 203
Waiting: 0 0 2.1 0 203
Total: 0 0 2.1 0 203四,在實際中的應用以上實現的phttp_get和mysql memcache的 中的 保持連接 概念類似,這種技術一般來說,只適用于fastcgi模式的web服務器。
對于本機之間的http通信,在測試過程中發現phttp_get的優勢有限,基本合乎邏輯。
對于本身處理時間比較長的服務,phttp_get的優勢也不明顯。
綜上,phttp_get適用于fastcgi模式的web應用調用遠程http服務,且此http服務器響應時間比較短的情況。五,服務端需要注意的事項1,http服務器必須支持HTTP/1.1協議
2,php應用必須返回Content-Length:的header,具體實現參見:http://cn.php.net/manual/en/function.ob-get-length.php需要在代碼中加入:ob_start();
$size=ob_get_length();
header( Content-Length: $size );
ob_end_flush();最后附上測試代碼: ?php//$url=http://10.69.2.206:8080/sms/ns2/save_msg.txtfunction ohttp_get($host,$port,$query, $body)
{
$fp=pfsockopen($host,$port,$errno,$errstr,1);
if(!$fp)
{
var_dump($errno,$errstr);
return -1;
}
$out = GET ${query} HTTP/1.1/r/n
$out.= Host: ${host}/r/n
$out.= Connection: close/r/n
$out.= /r/n
fwrite($fp,$out);
$line=trim(fgets($fp));
$header.=$line;
list($proto,$rcode,$result)=explode( ,$line);
$len=-1;
while( ($line=trim(fgets($fp))) != )
{
$header.=$line;
if(strstr($line, Content-Length: ))
{
list($cl,$len)=explode( ,$line);
}
if(strstr($line, Connection: close ))
{
$close=true;
}
}
if($len 0)
{
echo ohttp_get must cope with Content-Length header!/n
return -1;
}
$body=fread($fp,$len);
if($close)
fclose($fp);
return $rcode;
}
function phttp_get($host,$port,$query, $body)
{
$fp=pfsockopen($host,$port,$errno,$errstr,1);
if(!$fp)
{
var_dump($errno,$errstr);
return -1;
}
$out = GET ${query} HTTP/1.1/r/n
$out.= Host: ${host}/r/n
$out.= Connection: Keep-Alive/r/n
$out.= /r/n
fwrite($fp,$out);
$line=trim(fgets($fp));
$header.=$line;
list($proto,$rcode,$result)=explode( ,$line);
$len=-1;
while( ($line=trim(fgets($fp))) != )
{
$header.=$line;
if(strstr($line, Content-Length: ))
{
list($cl,$len)=explode( ,$line);
}
if(strstr($line, Connection: close ))
{
$close=true;
}
}
if($len 0)
{
echo phttp_get must cope with Content-Length header!/n
return -1;
}
$body=fread($fp,$len);
if($close)
fclose($fp);
return $rcode;
}$time1=microtime(true);
for($i=0;$i 10000;$i++)
{
$host= 10.69.2.206
$port=8080;
$query= /sms/ns2/save_msg.txt
$body=
$r=ohttp_get($host,$port,$query,$body);
if($r != 200)
{
echo return code : $r/n
}
}
$time2=microtime(true);
for($i=0;$i 10000;$i++)
{
$url= http://10.69.2.206:8080/sms/ns2/save_msg.txt
$host= 10.69.2.206
$port=8080;
$query= /sms/ns2/save_msg.txt
$body=
$r=phttp_get($host,$port,$query,$body);
if($r != 200)
{
echo return code : $r/n
}
}
$time3=microtime(true);
for($i=0;$i array( timeout = 1 )
)
);
$body=file_get_contents($url, 0, $ctx);
$r=200;
if($r != 200)
{
echo return code : $r/n
}
}
$time4=microtime(true);echo phttp_get: .($time3-$time2). /n
echo ohttp_get: .($time2-$time1). /n
echo file_get_contents: .($time4-$time3). /n ?html教程

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
青青草观看免费视频在线| 丁香视频免费观看| 国产激情视频在线观看| 国产精品视频一区二区三区麻豆 | 久久久久久五月天久久久久久久久| 亚洲精品午夜级久久久久| 亚洲国产日韩在线人成电影| 在线天堂视频| 日本一二三区视频免费高清| 欧美xxxx黑人又粗又长| 国产乱视频在线观看| 国产高清视频免费最新在线| 99re在线视频播放| 国自产拍在线网站网址视频| 国产精品白浆流出视频| 日本在线观看| 国产视频资源| 国产在线你懂得| 中文字幕av网| 综合蜜桃精品| 女同一区二区免费aⅴ| 国产一级免费| 九九热在线观看视频| 中文字幕中文字幕在线中高清免费版 | 国产精品69xx| 日本h片在线观看| 在线免费日韩| 国产精品视频一区二区久久| 久草在线资源福利| 日本国产在线| av色在线观看| 国产成人亚洲精品播放器下载| 国产精品第八页| 中文字幕在线第一页| 黄色国产在线| 成人av小说网| 最近中文字幕mv免费高清电影| 免费视频二区| 九色精品视频在线观看| 免费不卡中文字幕视频 | 亚洲成人av高清| 伊人资源视频在线| 精品美女调教视频| 精品亚洲综合| 尤物视频在线观看视频| 国产黄在线观看| 2019中文字幕在线电影免费| 国产高清一级片| 91欧洲在线视精品在亚洲| 国产日产精品久久久久久婷婷| 午夜视频在线观看网站午夜视频在线| 久久久久久久久亚洲精品| 免费a级在线播放| 美女网站在线观看| 国产乱在线观看视频| 国产亚洲依依| 91看片在线观看| 亚洲字幕成人中文在线观看| 亚洲天堂电影在线观看| 久久91精品视频| 国产男女无套在线播放| 国产一区二区三区四区尤物| 国产叼嘿网站免费观看不用充会员| av二区三区| 天堂在线视频| 在线视频xx| 日本中文字幕高清视频| 69国产精品视频| 久热精品免费视频| 国产网红在线| 青青久草在线| 在线a人片免费观看视频| 国产在线二区| 四虎成人欧美精品在永久在线| 国产精选在线观看| 在线中文字幕资源| 国产裸舞福利在线视频合集| 亚洲网站视频在线观看| 国产午夜在线视频| 超碰在线免费播放| av中文网站| 国产福利av网站| 久草.com| 人人澡人人爽| 在线看黄网站| 在线观看av网站永久| 国产一二区在线| 成人精品福利| www.亚洲视频| 性网站在线播放| 国产区在线看| 综合激情丁香| 国产蜜臀av在线播放| xxx国产精品| 在线视频观看亚洲| 在线亚洲电影| 亚洲精品午夜级久久久久| 国产成人久久精品77777| 国产视频中文字幕| 国产国语**毛片高清视频| 国产香蕉尹人视频在线| 国产欧美黑人| 国产91在线视频蝌蚪| 69国产精品视频| 在线国产一级| 亚洲精品影视在线| 日本视频一二三区中文字幕| xxxxx中文字幕| 黄网址在线播放免费| 国产综合视频一区二区三区免费| 免费在线你懂的| 超碰在线中文| 1区2区视频| 999在线视频| 老师我好爽再深一点的视频| 狠狠操五月天| 国产精品理人伦一区二区三区| 国产精品人人| av文字幕在线观看| 久久精品无码一区二区日韩av| 青青草免费在线观看| 老司机精品视频一区二区| 国产精品一区在线看| 尤物视频网站在线观看| 国产91在线视频蝌蚪| 四虎网站在线观看| 九九在线视频| 国产激情视频一区二区| av中文在线| 国产精品久久久久白浆| 免费视频中文字幕| 国产porny蝌蚪视频| 国产在线视频网站| 国产porn在线| 国产男女av| 一二三四区在线观看| 成人av小说网| yjizz视频网站在线播放| 国产对白叫床清晰在线播放| 开心婷婷激情| 中文av在线播放| 最新亚洲精品国自产在线观看| 亚洲欧美国产另类首页| 国产午夜精品久久久久免费视| 午夜小视频在线| 国产黄视频在线观看| 国产美女在线一区二区三区| 午夜影院在线| 尤物视频在线观看视频| 国产二区视频| 91av久久| 黄色三级视频在线观看| 日本视频在线观看一区二区三区| 国产超碰97| 51成人精品网站| 国产91久久久久| 国产精品久久久久一区二区国产| 国产在线视频福利| 福利在线观看| 在线91av| 国产日本韩国在线播放| 国产一级黄色电影| 国产青草视频在线观看视频| 中文字幕在线视频免费观看| 国产卡一卡二卡三| 国产免费视频| 中文字幕色视频| 国产网友自拍电影在线| 国产一二区在线观看| 国产精品日日爱| 国产高清视频免费最新在线| 国产经典av| 亚洲视频精品在线观看| av网址在线免费观看| 阿v免费在线观看| 好吊日视频在线观看| 最新超碰在线| 中文字幕av网| 久草在线视频网| 国产区视频在线观看| 国产高清自拍视频在线观看| 99久热re在线精彩视频| 亚洲欧美日韩成人网| 国产主播福利在线| 国产精品视频h| 亚洲www色| 国产网站免费观看| 性网站在线观看| 国产亚洲精品一区二区在线观看| 中文字幕av高清| 国产又色又爽又黄刺激在线视频| 国产黄色免费在线观看| 免费在线播放av| 91中文在线| 天天av综合网| 亚洲综合在线免费| 中文字幕日本在线| 免费国产在线视频| 中文日本在线观看| 国产精品黄页网站在线播放免费 |