繁体   English   中英

如何以最佳方式获得每次都不会读取的json api

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM