我正在绞尽脑汁试图找出为什么我在使用curl获取同一域上的页面内容时获得如此长的开始传输时间。
http://dragon.pbndev.net/?rah_external_output=team_pages。在我的浏览器中获取此页面的响应时间约为200毫秒,同一页面超过卷曲,我的starttransfer_time为~16秒。
如果我将下面的内容切换为https://www.google.com,我可以非常快速地获得响应,就像我在浏览器中点击目标网址一样。
我从其他“我的卷曲请求中找到的”这些选项中提到了很多这些选项。我只是无法弄清楚为什么响应时间太长了。
我也尝试使用file_get_contents()
上面的相同网址,我得到一个空的回复。
$ch = curl_init();
$getTemplateFromDomain = 'http://dragon.pbndev.net/?rah_external_output=team_pages';
curl_setopt($ch, CURLOPT_URL, $getTemplateFromDomain);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: close'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
curl_setopt($ch, CURLOPT_TIMEOUT, 25);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$response = curl_exec($ch);
$errStr = curl_error($ch);
$errNum = curl_errno($ch);
$head = curl_getinfo($ch, CURLINFO_HEADER_OUT);
$ci = curl_getinfo($ch);
var_dump(array('head' => $head, 'error_string' => $errStr, 'error_number' => $errNum, 'curl_info' => $ci, 'response' => $response));
这是我从var_dump得到的回复,所以我可以得到内容,只需要很长时间。
array (size=5)
'head' => boolean false
'error_string' => string '' (length=0)
'error_number' => int 0
'curl_info' =>
array (size=22)
'url' => string 'http://dragon.pbndev.net/?rah_external_output=team_pages' (length=56)
'content_type' => string 'text/plain; charset=utf-8' (length=25)
'http_code' => int 200
'header_size' => int 562
'request_size' => int 222
'filetime' => int -1
'ssl_verify_result' => int 0
'redirect_count' => int 0
'total_time' => float 16.195335
'namelookup_time' => float 0.001552
'connect_time' => float 0.001802
'pretransfer_time' => float 0.002
'size_upload' => float 0
'size_download' => float 7007
'speed_download' => float 432
'speed_upload' => float 0
'download_content_length' => float -1
'upload_content_length' => float 0
'starttransfer_time' => float 16.19518
'redirect_time' => float 0
'certinfo' =>
array (size=0)
empty
'redirect_url' => string '' (length=0)
'response' => string '<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="description" content="Lake Bemidji Dragon Boat Festival's website">
<meta name="keywords" content="Bemidji, Minne'... (length=7007)
最终我要将结果缓存在内存缓存中,所以我不必花时间,但我想弄清楚它为什么花了这么长时间才开始。