1

コードは機能しますが、ページの読み込みには最大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] => 9.080637

合計時間の90%を占めます。

それを改善する方法は?

4

1 に答える 1

1

CURLINFO_REDIRECT_TIMEダブルへのポインターを渡して、最終トランザクションが開始される前に、名前の検索、接続、事前転送、および転送を含むすべてのリダイレクト手順にかかった合計時間を秒単位で受け取ります。CURLINFO_REDIRECT_TIMEには、複数のリダイレクトの完全な実行時間が含まれます。(7.9.7で追加)

私は最も可能性が高いのは転送の場合だと言います:あなたの' http://www.somesite.com/xxx 'はひどく遅い(あなたのサイトでなければ修正するのは難しいです)、3つのリダイレクトはそれぞれ>3秒かかります。しかし、DNSルックアップと接続の速度を確認することはできますが、そのデータでは問題ないようです。

于 2012-05-29T05:28:22.803 に答える