我有一個從1服務器到另一個需要1秒的Web請求。我的瀏覽器中的相同請求幾乎沒有時間。我已經通過各種類似的問題望去,嘗試了所有的獻計獻策,我能找到包括從PHP內部的Web請求比較慢然後瀏覽器
- 使用捲曲代替的file_get_contents
- 嵌入自己的緊密連接頭在的file_get_contents
- 使用谷歌的域名加速域查找
- 用頭在目標服務器上,以避免永葆
這些都不取得對時間產生任何影響。下面是我嘗試這樣做的途徑:
$timeBefore = microtime(true);
//Only one of these active at a time
$context = stream_context_create(array('http' => array('header'=>'Connection: close\r\n')));
$output = file_get_contents($url,false,$context);
//Or
$context=stream_context_create(array('http' => array('header'=>"Host: www.google.com\r\n")));
$output = file_get_contents($url, false, $context);
//Or
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$timeAfter = microtime(true);
,然後記錄到文件中$timeAfter - $timeBefore
。作爲結果,我總是在1.04202604294左右,而使用它的客戶端應用程序實際上會看到1秒的延遲。
作爲一個便箋,如果它是相關的,這裏的2臺服務器以下面的方式A到B進行交談,在B對A的回答期間,它將該URL發送回A,然後將所有這些併發送它的原始響應回到A.因此,在從源連接期間有一個連接返回到源。
下面是從curl_getinfo
content_type => text/html,
http_code => 200,
header_size => 219,
request_size => 479,
filetime => -1,
ssl_verify_result => 0,
redirect_count => 0,
total_time => 1.04360199999999991860022419132292270660400390625,
namelookup_time => 0.0001579999999999999915796522476085783637245185673236846923828125,
connect_time => 0.0007219999999999999855393451042573360609821975231170654296875,
pretransfer_time => 0.000772000000000000008264222639553508997778408229351043701171875,
size_upload => 0,
size_download => 1,
speed_download => 0,
speed_upload => 0,
download_content_length => -1,
upload_content_length => -1,
starttransfer_time => 1.0435689999999999688640173189924098551273345947265625,
redirect_time => 0,
redirect_url =>
輸出所述調試該命令正在從2個服務器發送在相同的主機服務彼此,並且它們都沒有在負載下和其高品質的託管站點(液體web專用服務器)。響應和網址都很小
查看'curl_getinfo',它應該表明查找的每個階段需要多長時間,例如,從DNS解析名稱需要多長時間,等等。這會告訴你哪些區域需要優化。 – halfer
我已經在上面添加了輸出。 – user2292539
嗯,'starttransfer_time'是大部分時間 - 你是否得到類似的其他服務器的慢時間?你的服務器和目標服務器在哪裏,它們有多遠? – halfer