我正在开发一个PHP脚本,它从REST API请求一些数据。
首先我使用cURL for PHP,但是花了太多时间发送请求并获得响应。然后我尝试使用file_get_contents,但我得到了相同的结果。
我说PHP需要花费太多时间(15秒),因为我在同一台PC上浏览了浏览器(chrome)中的相同网址,只花了68毫秒。
我认为它可能是环境,但我的电脑的规格是:酷睿i5-4570,8GB内存,W7x64,所有更新,PHP 5.6.8 x32,Chrome v42 x64,有很多补充。我在嵌入式服务器上运行php。
我甚至尝试在IP服务器的URL中替换服务器名称(避免DNS外观),但得到了相同的结果。
我设置set_time_limit(3600)(php脚本超时),但我不希望脚本花费这么长时间来执行。
请帮忙吗?
修改 我的代码是: PHP - cURL执行时间(17.66秒)
$headers = array(
'Content-type: application/json',
'Authorization: Basic '.base64_encode($usr.':'.$pwd)
);
$opt = array(
CURLOPT_HTTPHEADER => $headers,
CURLOPT_URL => "http://url.example.com"
);
$ch = curl_init();
curl_setopt_array($ch, $opt );
curl_exec($ch);
curl_close($ch);
file_get_contents(13.63 s)
$headers = ['http' => ['header' => 'Authorization: Basic'.base64_encode($usr.':'.$pwd)] ];
$context = stream_context_create($headers);
file_get_contents("http://url.example.com", false, $context);
cURL命令执行行时间(12秒)
curl -D- -u "user:pwd" -X GET -H "Content-Type: application/json" http://url.example.com -o out.json -v
浏览器(45 - 63 ms)
我不认为下载大小很重要,因为它大约是1.2 KB。
我尝试在cURL PHP中使用gzip压缩,但输出是编码的,不知道如何解码它。我真的在考虑使用ASP.net并查看性能结果。
PHP ini中的任何配置都有帮助吗?比如增加缓冲区大小,分配默认内存?