cURL真的很慢

man*_*ort 8 php performance curl timeout

有没有人知道为什么在php5下cURL即使在45s超时也无法缓慢失败,在speedO'light服务器上下载几个kb文件?

这里的代码按照要求提供(尽管我在执行过程中不会因为脚本失败而将更多的超时时间提高,并且将初始Chrome中的useragent更改为Mozilla/4.0):

$ch = curl_init('http://www.somesite.com/' . $key);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.somesite.com/somereferer/');
// curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.39 Safari/530.5');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0');
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 600);
Run Code Online (Sandbox Code Playgroud)

jsp*_*cal 7

嗯,可能是一些事情,也许一些详细的输出会有某种错误

curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_VERBOSE, true); // some output will go to stderr / error_log
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$response = curl_exec($ch);
$errStr = curl_error($ch);
$errNum = curl_errno($ch);
$head = curl_getinfo($ch, CURLINFO_HEADER_OUT);
$ci = curl_getinfo($ch);
print_r(array($head, $errStr, $errNum, $ci));
Run Code Online (Sandbox Code Playgroud)

有时,用户代理会更改网站的响应方式,可能需要执行以下操作:

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.001 (windows; U; NT4.0; en-US; rv:1.0) Gecko/25250101');
Run Code Online (Sandbox Code Playgroud)


小智 5

当我设置 CONNECTtimeout 时,我会得到更快的响应。包括这个选项:

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,1)
Run Code Online (Sandbox Code Playgroud)