У меня есть эта функция в php, которая пытается прочитать API JSON, и это может занять до 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;
Вы говорите, что ваш код работает, но возвращает ноль, если он ничего не читает. Приведенный ниже код позволит избежать этого конкретного сценария.
$get = null;
while($get == null || $get === false) {
$get = file_get_contents('url');
}
return json_decode($get);
ПРИМЕЧАНИЕ: этот код Можно технически быть бесконечной петлей, предполагая, что это постоянно оценивает этот путь. Это было бы очень Рекомендуется провести какую-то проверку, чтобы убедиться, что веб-сервер не завершает работу сценария преждевременно и не работает вечно. У меня был бы установлен предел для того, сколько раз вы на самом деле должны пытаться получить, и вместо этого запустить это как цикл 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);
Других решений пока нет …