Информер общей мировой статистики заражений коронавирусом COVID-19 (2019-nCoV)
В продолжение темы получения информации распространения коронавируса COVID-19 и по просьбам некоторых пользователей сайта Pandoge, представляю вашему вниманию практическое применение описанных в статье функций в виде простого бесплатного адаптивного информера (виджета), с помощью которого вы сможете вывести на вашем сайте общую (по всему миру) статистику касаемо последствий COVID-19.
Сам информер (PHP-скрипт + верстка) выглядит следующим образом:
<?php
/*
Информер общей мировой статистики заражений коронавирусом COVID-19 (2019-nCoV)
URL: https://www.pandoge.com/moduli-i-skripty/informer-obschey-mirovoy-statistiki-zarazheniy-koronavirusom-covid-19-2019-ncov
Автор: Артём Малков
--------------------------------------------------
Источник данных: COVID19 (https://github.com/ChrisMichaelPerezSantiago/covid19)
*/
header('Content-Type: text/html; charset=utf-8');
$date = date('d.m.Y, H:i'); // Дата на момент кэширования
$cache_time_out = '10800'; // Время жизни кэша в секундах
$file_coronavirus_cache = __DIR__.'/cache_coronavirus.txt'; // Файл кэша
if(!is_file($file_coronavirus_cache) || filemtime($file_coronavirus_cache) < (time() - $cache_time_out)) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, filter_input(INPUT_SERVER, 'HTTP_USER_AGENT', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW));
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, 'https://covid19api.io/api/v1/AllReports');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
curl_close($ch);
$data = json_decode($data, true);
$cases = number_format($data['reports'][0]['cases'], 0, '', ' ');
$deaths = number_format($data['reports'][0]['deaths'], 0, '', ' ');
$recovered = number_format($data['reports'][0]['recovered'], 0, '', ' ');
$content = <<<HTML
<div class="coronavirus_statistics_block">
<div class="coronavirus_statistics_title">Коронавирусная инфекция</div>
<div class="coronavirus_statistics_body">
<div>Зараженных:<span class="cases">{$cases}</span></div>
<div>Погибших:<span>{$deaths}</span></div>
<div>Выздоровевших:<span class="recovered">{$recovered}</span></div>
</div>
<div class="date">Статистика по миру на <b>{$date}</b></div>
</div>
HTML;
file_put_contents($file_coronavirus_cache, $content);
}
echo file_get_contents($file_coronavirus_cache);
?>
Стили:
.coronavirus_statistics_block {
border: 1px solid #eff0f0;
border-radius: 2px;
font-family: arial;
font-size: 14px;
}
.coronavirus_statistics_title {
background: #222;
color: #fff;
border-radius: 2px 2px 0 0;
padding: 10px;
}
.coronavirus_statistics_body div {
padding: 8px 10px;
background: #fcfcfc;
}
.coronavirus_statistics_body span {
float: right;
color: #555;
}
.coronavirus_statistics_body .cases {
color: #c12727;
}
.coronavirus_statistics_body .recovered {
color: #7fb424;
}
.coronavirus_statistics_body div {
border-bottom: 1px solid #eff0f0;
}
.coronavirus_statistics_block .date {
background: #0080bd;
font-size: 12px;
padding: 5px 10px;
color: #fff;
border-radius: 0 0 2px 2px;
text-align: right;
font-style: italic;
}
По желанию меняете на свои.
Основные моменты я пояснил, данные кэшируются (обновляются) на 3 часа во избежание лишних запросов к сайту-источнику.
Если что-то кажется вам не совсем понятным, не стесняйтесь и спрашивайте об этом в комментариях ниже.