Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的for循环占用了太多时间_Php_Json_Loops_For Loop - Fatal编程技术网

Php 我的for循环占用了太多时间

Php 我的for循环占用了太多时间,php,json,loops,for-loop,Php,Json,Loops,For Loop,这些天,土耳其有一场选举,我正在编写一个php脚本,用API跟踪选举,我的项目中有一个for循环,显示所有土耳其选举的一般结果。这个循环总结了81个不同省份的结果,但它花费了太多的时间,有时它不起作用,因为它需要30秒以上,我的页面没有加载。我能做些什么来减少这一时间 $mi_total_vote = 0; for ($id=1; $id < 82; $id++) { $turkey_data = file_get_contents('http://secim-api.adilsec

这些天,土耳其有一场选举,我正在编写一个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;
}
$mi_total_vote=0;
对于($id=1;$id<82;$id++){
$turkey\u data=文件\u获取\u内容('http://secim-api.adilsecim.net/2/city/“.$id..json”);
$turkey\u json=json\u解码($turkey\u数据);
$mi=$turkey_json->results->mi;
$mi_total_vote=$mi_total_vote+$mi;
}
JSON文件是我的API数据。我必须对它们进行总结,以获得所有火鸡的结果。

使用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;
    }


?>

利用它的特性:D-通过ajax异步加载它

(不会在这里工作,因为-但是你得到了这个概念;))

如果你很勇敢,你可以执行一个84个循环,并立即加载它们——但这会很快引起你不必要的注意:p

var i=1;
var max=82;
var总和=0;
功能负荷(一){
$(“#状态”).text(“加载”+i+”或“+max”);
$.ajax({
网址:'http://secim-api.adilsecim.net/2/city/“+i+”.json”,
键入:“JSON”,
成功:功能(msg){
总和+=msg.results.mi;
如果(i<82){
加载(i++);
}否则{
$(“#状态”).text(“加载”+i+”或“+max+”完成”);
}
}
});
}
负荷(i)




结果:0
您几乎无法减少发出HTTP请求所需的时间。。。您是否无法在单个文件中获得这些结果?遗憾的是,无法在单个文件中获得这些结果:(这没什么大不了的:/@cemekkazan对我来说只花了几秒钟。在@SupunPraneeth ye中尝试你的代码。你说得对,花了我1.5秒-但他的服务器连接可能有限。我认为我的服务器中存在旋度问题。是的,我解决了,但仍然没什么大不了,文件内容持续12秒,旋度持续9秒这是一个好主意,但仍然需要太多的时间,人们不想等待