[英]How to get json api that doesnt read every time the best way
我在 php 中有这个函数,它试图读取一个 json api,它可能需要多达 10 次尝试来读取它,我想将该响应发送给视图,但是该函数需要很长时间才能运行并且通常不起作用,怎么办我让代码运行得更好
编辑改变了问题
现在基本上是这样,它有点工作,但我想要一个更好的选择。
$getjson = null;
for($i =0; i < 10; $i++){
try{
$getjson = json_decode(file_get_contents('url'));
if(array_key_exists('index', $getjson)) break;
}catch(\Exception $e){}
}
return $getjson;
您说您的代码运行,但如果它没有读取任何内容,则返回 null。 下面的代码将避免这种特定情况。
$get = null;
while($get == null || $get === false) {
$get = file_get_contents('url');
}
return json_decode($get);
注意:此代码在技术上可以是一个无限循环,假设它不断地以这种方式评估。 这将是非常可取的有某种检查,以确保脚本不会由Web服务器打死过早,而且它不会继续运行下去。 我会对您实际上应该继续尝试获取的次数设置限制,并将其作为 for 循环运行。 如果所有迭代仍然失败,请确保有一个回退。
这样的事情会更可取:
$get = null;
$limit = 100;
$i = 0;
do {
$get = file_get_contents('url');
$i++;
} while(($get == null || $get === false) && $i < $limit);
return json_decode($get);
最后,如果你不喜欢 do-while,你也可以用一个 for 来做。
$get = null;
for($i = 0; ($get == null || $get === false) && $i < $limit; $i++) {
$get = file_get_contents('url');
}
return json_decode($get);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.