Обрабатывать, когда API не отвечает - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь получить валюты евро, доллара и турецких лир и сравниваю их. Но иногда API (я использую случайные значения JSON веб-сайта валюты) не может ответить. Невозможно получить какое-либо значение и загрузку страницы через 30 секунд, после того, как время выполнения было сделано, появляется ошибка. То, что я пытаюсь сделать, это: если он не мог получить значение в 1 секунду (или меньше) от API, вернуть ноль. Как я могу это сделать. Если кто-нибудь может помочь, я был бы рад. Это мои php коды. Я пытался использовать, если еще в этом, но не работал.

ps: у меня есть ajax-коды для этого, они обновляются при изменении значения. Это работает в большинстве случаев. Но 2-3 раза в день выдает ошибку.

$json_eur = file_get_contents('https://doviz.com/api/v1/currencies/EUR/latest');
$val_eur = json_decode($json_eur, true);

echo $val_eur['selling'];

EDIT

Это решение. Добавил несколько кодов в ответ JRoss.

$ctx_dollar = stream_context_create(array(
    'http' => array(
        'timeout' => 1
    )
)
);
$usd_url = 'https://doviz.com/api/v1/currencies/USD/latest';

if (@file_get_contents($usd_url)):
    $json_usd = file_get_contents($usd_url, 0, $ctx_dollar);
    $val_usd = json_decode($json_usd, true);
    if (is_numeric($val_usd['selling'])) {
        echo $val_usd['selling'];
    }
    else {
        echo "loading...";
    }
endif;

1 Ответ

0 голосов
/ 29 октября 2018
$ctx = stream_context_create(array( 
    'http' => array( 
        'timeout' => 1 
        ) 
    ) 
); 
file_get_contents("https://doviz.com/api/v1/currencies/EUR/latest", 0, $ctx); 

http://php.net/file_get_contents

и к тому же я бы ловил исключения. try {} catch (Exception $e) {}

...