2015-04-16 4 views
0

У меня есть веб-страница PHP, которая обслуживает RSS-канал, но для генерации ответа требуется около 15-20 секунд (которые затем будут кэшироваться в течение 10 минут на сервере для более быстрого ответа).Cron Job timing Schedule

Как установить время выполнения cron для этой операции? У меня проблема с этим. Я думаю, что если я вызову страницу до 10 минут, она запустит кешированную страницу, чтобы я не получил последнюю обновленную страницу, это правда? И если я назову эту страницу через 10 минут, мне придется ждать 15-20 секунд, чтобы получить ответ?

Как мне добиться этого процесса, когда я получу обновленный фид с быстрым ответом? Я раньше не пробовал работу cron, это мой первый раз, поэтому я считаю это запутанным.

Моя команда хрон является: */10 * * * * wget http//www.example.com/multifeed.php

Правильно ли это?

+0

Вы можете сделать что-то вроде '*/10 * * * * php /path/to/script.php>/path/to/rss.xml'. Ваш cron обычно настраивается с помощью 'crontab -e', но некоторые хосты предлагают вместо него панель управления. Да, если вы кешируете каждые 10 минут, тогда ваш обслуживаемый RSS будет где-то между 0-10 минутами, в зависимости от времени запуска cron и времени посещения пользователя. – halfer

+0

(Кэширование - это, как правило, хорошая идея, хотя 15-20 секунд звучит довольно медленно, и вы также можете исправить это). – halfer

+0

@halfer он получает фид с стороннего сайта, поэтому я считаю, что ему нужно так много, чтобы позвонить на стороннюю страницу и подать заявку. Но проблема в том, когда я должен вызвать скрипт php для запуска этой страницы? – Roon13

ответ

0

У вас не будет идеального cron, чтобы приносить свежие данные, как только он будет доступен. Это ограничение, с которым вам придется жить, я думаю.

Что бы я сделал, это запустить этот cron каждые 2 минуты и попытаться получить новые данные, я бы проверил, не изменилось ли последнее обновление, чем у меня уже есть, и если это так, обновите файл, если он не, ничего не делать и ждать следующего cron.

Этот метод обеспечит не более двух минут устаревших данных.

Другой вариант, чтобы проверить время изменения в Hte файла: http://php.net/manual/en/function.filemtime.php

В принципе, я посещаю вашу страницу, мы проверяем время изменения файла, если он больше 10 минут, мы забираем свежие данные, это, в сочетании с помощью cron, может предоставить пользователям возможность всегда видеть свежие данные. Если свежесть информации не так важна (можете ли вы жить с двумя минутами устаревших данных?), Если это не так важно, просто запустите двухминутный cron.

Надеюсь, это поможет.

+0

Единственное предостережение в том, поддерживает ли сторонний сайт 720 запросов каждый день из одного источника. Это не большая нагрузка, но если операторы сайта видят частые и регулярные IP-адреса в своих журналах, они могут быть склонны блокировать (особенно если каждый из них занимает 15 + sec для рендеринга). В конце концов, это зависит от того, имеет ли OP разрешение на выборку. – halfer

+0

Я попробую ваш метод. Я надеюсь, что это сработает для меня – Roon13

+0

@halfer Я получаю rss-канал со своего сайта, что я делаю, я конвертирую их в полный канал, поэтому потребовалось 15-20 секунд, я думаю, – Roon13