这些天来,土耳其举行了选举,我正在编写一个PHP脚本以使用API进行选举,并且我的项目中有一个for循环以显示整个土耳其的总体结果。该循环总结了81个不同省份的结果,但是这花费了太多时间,有时不起作用,因为这花费了30多秒钟,并且我的页面无法加载。我该如何减少这段时间?
$mi_total_vote = 0;
for ($id=1; $id < 82; $id++) {
$turkey_data = file_get_contents('http://secim-api.adilsecim.net/2/city/'.$id.'.json');
$turkey_json = json_decode($turkey_data);
$mi = $turkey_json->results->mi;
$mi_total_vote = $mi_total_vote + $mi;
}
JSON文件是我的API数据。我必须总结它们以获得整个土耳其的结果。
答案 0 :(得分:2)
使用cURL,速度更快:
<?php
$mi_total_vote = 0;
for ($id=1; $id < 82; $id++) {
$ch = curl_init('http://secim-api.adilsecim.net/2/city/1.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$turkey_data = curl_exec($ch);
$turkey_json = json_decode($turkey_data);
$mi = $turkey_json->results->mi;
$mi_total_vote = $mi_total_vote + $mi;
}
?>
答案 1 :(得分:1)
从中获取功能:D-通过ajax异步加载
(不会在这里工作,因为SOP-但您会明白这个概念;))
如果您很勇敢,可以执行所有84个循环并立即加载它们-但这会很快引起您不必要的注意:P
var i = 1;
var max = 82;
var sum = 0;
function load( i ) {
$('#status').text( "Loading " + i + " of " + max );
$.ajax({
url: 'http://secim-api.adilsecim.net/2/city/' + i + '.json',
type: 'JSON',
success: function(msg) {
sum += msg.results.mi;
if( i < 82 ) {
load(i++);
} else {
$('#status').text( "Loading " + i + " of " + max + " DONE" );
}
}
});
}
load(i);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<small><span id="status"></span><br/></small>
<br/>
Result: <span id="result">0</span>