我使用cURL在PHP中调用REST端点来获取一些JSON数据:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo $result;
curl_close($ch);
使用我的localhost上的代码获取数据需要2.5秒。在实时服务器上运行时,相同的代码大约需要7.5秒。当直接在浏览器上打开URL时,只需1.5秒。
我的问题是:为什么cURL需要这么长时间才能在实时服务器上获取数据?如何解决这个问题呢?
以下是服务器上curl_getinfo($ch)
的输出:
Array
(
[content_type] => application/json
[http_code] => 200
[header_size] => 420
[request_size] => 113
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 7.305496
[namelookup_time] => 0.150378
[connect_time] => 0.473187
[pretransfer_time] => 0.473237
[size_upload] => 0
[size_download] => 1291504
[speed_download] => 176785
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => 0
[starttransfer_time] => 1.787901
[redirect_time] => 0
[redirect_url] =>
[certinfo] => Array
(
)
[primary_port] => 80
[local_port] => 53962
)
答案 0 :(得分:0)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "set ur url");
curl_setopt($ch, CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
请查看此示例
答案 1 :(得分:0)
尝试使用 ip 地址而不是域名,因为 curl 可能在 dns 查找方面存在问题。