我正在尝试获取欧元,美元和土耳其里拉货币并进行比较。但有时api(我正在使用随机货币网站json值)无法响应。 无法获得任何值,页面加载30秒,执行时间完成后,出现错误。 我想做的是:如果它在1秒钟(或更少)内无法从api中获取任何值,则返回null。我怎样才能做到这一点。如果有人可以帮忙,我会很高兴的。这是我的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'];
编辑
这是解决方法。在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;
答案 0 :(得分:2)
$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) {}