У меня есть веб-страница PHP, которая обслуживает RSS-канал, но генерация ответа занимает около 15-20 секунд (который затем будет кэшироваться на сервере в течение 10 минут для более быстрых ответов).
Как я могу установить время работы cron для этой операции? У меня проблемы с этим. Я думаю, что если я позвоню на страницу раньше, чем через 10 минут, она запустит кэшированную страницу, поэтому я не получу последнюю обновленную страницу, это правда? И если я позвоню на эту страницу через 10 минут, то придется ли ждать 15-20 секунд, чтобы получить ответ?
Как мне удается сделать этот процесс, где я получу обновленный канал с быстрым ответом? Я не пробовал работу cron раньше, это мой первый раз, поэтому я нахожу это запутанным.
Моя команда cron: */10 * * * * wget http//www.example.com/multifeed.php
Это правильно?
У вас не будет идеального хронона, чтобы приносить свежие данные, как только они будут доступны. Я думаю, что это ограничение, с которым вам придется жить.
То, что я хотел бы сделать, это запускать этот cron каждые 2 минуты и пытаться получить новые данные, я бы проверил, отличается ли последнее обновление от того, что у меня уже есть, и если это так, обновите файл, если нет, ничего не делайте и ждать следующего cron.
Этот метод предоставит не более двух минут устаревших данных.
Другой вариант — проверить mtime файла hte: http://php.net/manual/en/function.filemtime.php
По сути, я захожу на вашу страницу. Мы проверяем время mtime файла, если оно больше 10 минут, мы выбираем свежие данные, что в сочетании с cron позволяет пользователям всегда видеть свежие данные. Если свежесть информации не так важна (можете ли вы жить с двумя минутами устаревших данных?), Если это не так важно, просто запустите двухминутный cron.
Надеюсь, поможет.
Других решений пока нет …