我file_get_contents
用来阅读在线 json URL,但我没有cURL
安装任何建议如何更快地提出我的请求
谢谢,玛丽安娜
我file_get_contents
用来阅读在线 json URL,但我没有cURL
安装任何建议如何更快地提出我的请求
谢谢,玛丽安娜
做一些简单的基准测试:
<?php
$start = microtime(true);
for ($i=0;$i<=10;$i++){
$handle = fopen("http://example.com/", "r");
while (!feof($handle)) {
$result .= fread($handle, 1024);
}
fclose($handle);
}
$end = microtime(true);
$time = $end - $start;
echo "Did fopen test in $time seconds<br />\n";
?>
在 6.1602981090546 秒内进行了 fopen 测试
<?php
//file_get_contents is basically a wrapper for the above fopen so hence not much of a difference
$start = microtime(true);
for ($i=0;$i<=10;$i++){
$result = file_get_contents('http://example.com');
}
$end = microtime(true);
$time = $end - $start;
echo "Did file_get_contents test in $time seconds<br />\n";
?>
是否在 6.5289459228516 秒内测试了 file_get_contents
<?php
$start = microtime(true);
for ($i=0;$i<=10;$i++){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com");
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
}
$end = microtime(true);
$time = $end - $start;
echo "Did cUrl test in $time seconds<br />\n";
?>
在 2.9657130241394 秒内进行了 cUrl 测试
cURL 赢得了胜利……是时候寻找更好的主机了
无论哪种方式都应该很快。
http://www.ebrueggeman.com/blog/php_benchmarking_fopen
没有更好的。
没有办法让您的请求更快。如果数据变化不大,您可以做的是在本地缓存数据。
伪代码:
if (get_modification_time_of_file('cached.json') < time() - 300) {
download_file()
} else {
read_locally()
}
您有 2 个选项。
1:使用 fopen/file_get_contents 函数
2:通过设置客户端桥并使用 AJAX 通过 POST 方法将其发送到 php。然后使用 json_decode 在 PHP 上获取它。