【问题标题】:php curl - long redirect time in curl_getinfo()php curl - curl_getinfo() 中的长重定向时间
【发布时间】:2012-05-29 05:05:12
【问题描述】:

代码有效,但加载页面最多需要 10 秒。然后我添加 curl_getinfo(),发现重定向时间已经使用了总时间的 90%....

<?php
//
$url = "http://www.somesite.com/###";

$username = 'username';
$password = 'password';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

$out = curl_exec($ch);

print "error:" . curl_error($ch) . "<br />";
print "output:" . $out . "<br /><br />";

$info = curl_getinfo($ch);
print_r($info);

curl_close($ch);

?>

curl_getinfo() 显示:

Array ( 
[url] => http://www.somesite.com/xxx
[content_type] => text/xml;charset=UTF-8 
[http_code] => 200 
[header_size] => 2760 
[request_size] => 5576 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 3 
[total_time] => 10.751595 
[namelookup_time] => 2.0E-5 
[connect_time] => 0.001612 
[pretransfer_time] => 0.001613 
[size_upload] => 0 
[size_download] => 24506 
[speed_download] => 2279 
[speed_upload] => 0 
[download_content_length] => 24506 
[upload_content_length] => 0 
[starttransfer_time] => 0.62479 
[redirect_time] => 9.080637 <--------------
[certinfo] => Array ( ) 
[redirect_url] => 
) 

看到[redirect_time] =&gt; 9.080637

占总时间的90%。

如何改进?

【问题讨论】:

    标签: php curl performance


    【解决方案1】:

    CURLINFO_REDIRECT_TIME 传递一个指向 double 的指针以接收总时间,以秒为单位,在最终事务开始之前,所有重定向步骤包括名称查找、连接、预传输和传输。 CURLINFO_REDIRECT_TIME 包含多个重定向的完整执行时间。 (7.9.7新增)

    我说最有可能是传输问题:您的 'http://www.somesite.com/xxx' 非常慢(如果不是您的网站,这很难解决),3 次重定向需要 > 3 秒每个。但是您可以检查 dns 查找和连接的速度有多快,尽管在该数据中看起来还不错。

    【讨论】:

    • 但是当我直接访问somesite.com/xxx时,只需要不到1秒!!!
    • 然后检查浏览器中的完整请求和 curl-session 中的完整请求(完整的请求标头和正文,完整的响应标头和正文)之间的区别,玩弄它们直到它们一样多就像你能得到它们一样。逻辑表明现在有一些不同。我考虑过保持活动连接,但 curl 默认使用这些连接...
    • 感谢 Wrikken,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 2023-03-10
    • 2012-05-04
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多