Как планировать задачи в PHP? (Методы хранения и запуска)


Всем привет Я использую Zend framework для своего PHP-проекта. В принципе, у меня есть несколько действий, которые я хочу выполнять автоматически. Я буду использовать работу cron, чтобы сделать трюк. Задание cron запустит файл php-скрипта.

До сих пор все кажется нормальным. Теперь я создал таблицу в своей базе данных и сохранил в ней действия, которые мне нужно выполнить. Например, мне нужно сделать следующее:

1 - Создайте файл образца (5 раз).

2 - Загрузить все примеры файлов (1 время).

3 - отправка почты (непрерывная).

Поэтому я сохраню в своей таблице контроллер и действие для (создания файла образца) и установлю время его повторения равным 5, а также установлю время его выполнения. То же самое будет сделано для двух других действий.

Теперь файл сценария запускается каждую минуту. В файле сценария я выберу все записи из таблицы, время выполнения которых равно текущему времени, а затем запущу их.

Теперь, чтобы прояснить ситуацию, просто очистите эту систему на самом деле работает, но я думал о лучших или улучшенных методах планировщика. Сохранение запланированных действий в таблице звучит как хорошая идея, но мне было интересно, есть ли лучший подход?!

Author: Songo, 2011-03-13

2 answers

Мне это кажется прекрасным. Вы используете задание cron для запуска PHP-скрипта, который выбирает соответствующие записи для выполнения из таблицы базы данных. Хранение данных, пока они находятся в нормализованной форме в базе данных, будет эффективным способом. Следите за нагрузкой на свой сервер и при необходимости корректируйте ее оттуда.

 0
Author: Gary Corbett, 2015-03-29 03:03:59

Мой подход заключается в том, что у меня есть циклический скрипт, который "очищает" (устанавливает задания как "законченные") таблицу. И есть еще больше крон с разным временем, которые заполняют таблицу. Таким образом, рабочий процесс выглядит следующим образом:

minute: nothing to do
minute: nothing to do
hour: added export feed update
minute: export feed update finished
minute: nothing to do
minute: nothing to do
minute: nothing to do
minute: nothing to do
...
minute: nothing to do
five_hours: added "clear the cache"
minute: clear cache finished
minute: nothing to do
minute: nothing to do
...
 0
Author: Tomáš Fejfar, 2011-03-13 15:12:37