我有一个API,该API使用curl发出get请求以获取来自外部主机的响应。
查找时间为5秒,这比应该慢10到20倍。我还尝试了file_get_contents(<url>)
,这大约需要5秒钟。
然后我尝试通过VPS(通过ssh)ping相同的源,发现ping的DNS查找时间也为5秒,因此我尝试更改服务器的dns设置,并给它提供另一个DNS ip以使用(google和一个另一个),并解决了服务器的问题。现在,从服务器执行的ping操作是即时的,无需花费时间即可将域名解析为IP。
但是,curl请求仍然需要相同的时间。 API命令5秒太慢。在这里可以更改什么?我该怎么做才能使速度更快?
这是curl_info日志:
[url] => https://www.hungrybulb.com/pony/relay.php/?object=user&user=4fd582133861b5c74b4dab7ba42934aa1&scene=home-tv+series
[content_type] => text/html; charset=UTF-8
[http_code] => 200
[header_size] => 234
[request_size] => 143
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 5.254223
[namelookup_time] => 5.191469
[connect_time] => 5.192079
[pretransfer_time] => 5.246915
[size_upload] => 0
[size_download] => 1
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => 1
[upload_content_length] => 0
[starttransfer_time] => 5.254214
[redirect_time] => 0
[certinfo] => Array
(
)
[request_header] => GET /pony/relay.php/?object=user&user=4fd582133861b5c74b4dab7ba42934aa1&scene=home-tv+series HTTP/1.1
Host: www.hungrybulb.com
Accept: */*
更新1:当我在localhost上运行该代码时,其运行速度相当快。我认为那是因为我的本地计算机的DNS查找不需要时间。
答案 0 :(得分:0)
问题出在我的服务器用作主要服务器的DNS服务器上。我主要使用8.8.8.8,次要使用8.8.4.4。我删除了8.8.8.8,将8.8.4.4设置为主服务器,并添加了一个免费的DNS作为辅助服务器。