2015-05-03 2 views
2

Моя система запускает некоторые интенсивные задания cron два раза в день.Запуск задания cron, выполняющего другие расписания заданий cron в MYSQL

Это длинные сценарии.

Иногда в моей системе выполняется действие, требующее выполнения задания cron по требованию.

Моя идея - создать главное задание cron, которое проверяет мою базу данных для таблицы запланированных событий и запускает их по мере необходимости.

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

+0

предложение - прочитайте на cron, предполагая, что вы работаете в системе * nix, и да, это, на мой взгляд, лучший способ сделать это – dbinns66

ответ

1

Если вы согласны с минимальным интервалом между рабочими местами, который составляет одну минуту, тогда ваш подход хорош. Я предполагаю, что вы храните on-demand рабочих мест в пределах одной таблицы вашей базы данных, в этом случае вам необходимо также учитывать следующее:

  1. вам нужно отметить on-demand работу в качестве in progress, чтобы избежать сценариев, где on-demand работа занимает больше минуты, а также подобран следующей работы
  2. вы могли бы также рассмотреть вопрос о повторной попыткой не удалось рабочих мест, или заданий, для которых скрипт обработки не удалось (либо разбился или был убит системой по какой-либо причине)

Если on-demand действия необходимо позаботиться как можно скорее, и вы также захотите позаботиться об этих двух элементах, тогда вы можете рассмотреть подход к планированию работы, например, используя RabbitMQ. Этот подход имеет немного более крутую кривую обучения, а затем основанную на cron, однако большое преимущество заключается в том, что после того, как вы планируете работу, вам не нужно много заботиться об этом, за исключением сообщения о том, как запустить его.

0

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

Иногда в моей системе выполняется действие, требующее выполнения задания cron по запросу.

Если вы получили доступ к system() или exec() функций в PHP файлы, которые вы можете добавить хрон рабочих мест и проверить наличие дубликатов при необходимости

(crontab -l ; echo "0 * * * * stuff") | sort - | uniq - | crontab - 

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

Смежные вопросы