Расшифровка и кэширование JSON каждые 60 минут - PullRequest
1 голос
/ 30 мая 2010

Как мне это сделать на php-странице?

Я хочу получить и декодировать строку json и отобразить результаты в виде HTML на моей странице, однако я не хочу, чтобы она возвращалась к источнику.

Если бы я мог записать декодированную строку в текстовый файл, скажем, Weather.txt на сервере, сохранить форматирование html и сделать так, чтобы страница не получала сценарий json, пока не прошло 60 минут с момента его последнего использования был выбран независимо от того, сколько раз страница открывалась в течение этого 60-минутного периода и просматривался weather.txt.

Все, что я могу придумать, - это простой сценарий, который содержит горячие ссылки, а все остальное, что я пробовал, просто провалилось.

$ file = file_get_contents ('http://sample.com/weather');
$ out = (json_decode ($ file));
echo $ out-> mainText;

Буду признателен за любую помощь в этом.

Ответы [ 4 ]

1 голос
/ 30 мая 2010

Вы можете использовать cronjob в UNIX, который каждый час перезаписывает содержимое weather.txt тем, что выводит ваш код

1 голос
/ 30 мая 2010

Вы также можете хранить данные в таблице с двумя столбцами, 1 - данные, один - дц.

SO ....

SELECT * FROM table WHERE dts > NOW() - INTERVAL 60 MINUTE

if($mysqli->num_rows == 0)
{
   $file = file_get_contents('http://sample.com/weather');
   REPLACE INTO table SET data="$file",dts=NOW();
   $out = json_decode($file);
}
else
{
   $out = json_decode($mysqli->data);
}
echo $out->mainText; 

замените операторы SQL выбранной вами СУБД

1 голос
/ 30 мая 2010

Вы можете использовать filemtime () для повторного создания weather.txt каждую минуту и, если нет, для отправки существующего файла.

0 голосов
/ 01 августа 2012

Попробуйте мой ответ на API Twitter позволяет только 150 вызовов json в час, и Twitter удаляет ненужные куки Как мне это предотвратить?

Есть хороший модуль кеширования. Он установлен на 5 минут, но его легко изменить на 60 минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...