Как кешировать запарсенные данные на час?

Главные вкладки

Аватар пользователя squanto squanto 2 февраля 2017 в 12:16

Доброго времени суток, уважаемое сообщество. Есть код:

<?php
$url
="http://api.openweathermap.org/data/2.5/weather?id=2025339&lang=ru&APPID=f1640908867a081e19cd9af2fa68cea2&units=metric";
$json=file_get_contents($url);
$data=json_decode($json,true);
echo 
$data['main']['temp'], '&degC &nbsp;</div>' ;
echo 
'<div id="infoImg"><img src=http://openweathermap.org/img/w/'$data['weather'][0]['icon'],'.png></div>';
?>

Он отдаёт 2 значения с сайта OpenWeather. Подскажите как его переписать так, чтобы хранить полученные значения в КЭШе друпала до тех пор, пока не перезапуститься крон, а в произвольном месте сайта, выводить кешированные данные? Объясните чайнику элементарно, буду благодарен за подробный пример.

Комментарии

Аватар пользователя gun_dose gun_dose 2 февраля 2017 в 12:46

https://www.lullabot.com/articles/a-beginners-guide-to-caching-data-in-d...

или в двух словах:

<?php
function my_module_function() {
  
$my_data = &drupal_static(__FUNCTION__);
  if (!isset(
$my_data)) {
    if (
$cache cache_get('my_module_data')) {
      
$my_data $cache->data;
    }
    else {
      
// Do your expensive calculations here, and populate $my_data
      // with the correct stuff..
      
cache_set('my_module_data'$my_data'cache'time()+3600);
    }
  }
  return 
$my_data;
}
?>
Аватар пользователя Orion76 Orion76 4 февраля 2017 в 1:30

Маленькая поправка..
Если по условию ТС кэш должен генерироваться по крону, то время жизни кэша в этой функции устанавливать не надо.
и вообще.. логику функции необходимо пересмотреть.. она предназначена для другого..
но напрвление правильное-)