【发布时间】:2010-12-30 21:56:50
【问题描述】:
全部,
我必须请求一个返回 JSON 请求的 URL。我正在使用 PHP 和 CURL 来执行此操作。目前,请求和响应大约需要 3-4 秒。
以下是卷曲代码
$ch = curl_init();
$devnull = fopen('/tmp/curlcookie.txt', 'w');
curl_setopt($ch, CURLOPT_STDERR, $devnull);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $desturl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
$ret = curl_exec($ch);
curl_close($ch);
if ($devnull)
{
fclose($devnull);
}
下面是 CURL_GETINFO 数组
Array
(
[url] => https://xx.xx.xxx.xx/portalsite/tester
[content_type] => application/json
[http_code] => 200
[header_size] => 198
[request_size] => 835
[filetime] => -1
[ssl_verify_result] => 20
[redirect_count] => 0
[total_time] => 2.054561
[namelookup_time] => 6.5E-5
[connect_time] => 0.016048
[pretransfer_time] => 0.123947
[size_upload] => 699
[size_download] => 46735
[speed_download] => 22746
[speed_upload] => 340
[download_content_length] => 0
[upload_content_length] => 0
[starttransfer_time] => 1.743973
[redirect_time] => 0
)
如何加快 CURL 处理时间?
谢谢
【问题讨论】:
-
用浏览器访问
$desturl需要多长时间?如果这也需要 3-4 秒,我不认为 cURL 是罪魁祸首。 -
如果我显式访问 URL,它实际上非常快。不到 2 秒
-
我还发现设置 CURLOPT_TIMEOUT 会强制 cURL 使用该时间,最好不要设置此常量并让 cURL 卷曲