Linux Cron - Запустите cron из Mysql

0

У меня есть веб-сервер, на котором запущено несколько vhosts, и у каждого vhost есть много заданий, которые нужно запустить, которые являются как веб-запросами, так и рубинами.

Например, я должен запустить ruby-скрипт каждые 2 мин, чтобы проверить электронную почту, а затем еще один рубиновый скрипт один раз в час, чтобы проверить наличие обновлений. то мне нужно запустить веб-страницу в 18:00 каждую ночь, чтобы отправить мне отчет по электронной почте. то мне нужно запустить еще одну веб-страницу каждые 6 часов для выполнения общих задач.

Итак, как я это делаю сейчас, в crontab, и я вводил новую строку для каждой записи для рубиновых скриптов, я просто вызываю rb файл, а для веб-страниц запускаю wget, и он отлично работает

проблема в том, что im теперь начинает получать много записей 100+ в моем crontab i, если я пишу новый скрипт, мне нужно добавить запись для каждого vhost в crontab (И проблемы случаются, когда я пропускаю один)

То, что я надеялся построить cron в mysql, тогда для каждого виртуального хоста вызовет "mysql cron" один раз, потом добавит остальное.

Тогда мне нужна только одна запись в crontab, и если мне нужно добавить новое расписание, я просто должен написать запись в mysql

Кто-нибудь знает, как я могу это сделать?

Теги:
cron

1 ответ

1

Почему вы не используете запланированные задания MySQL (например, события) для сценариев, предназначенных исключительно для базы данных?

Я думаю, что это может быть лучший путь. Разделите свои сценарии в двух категориях: базе данных и других. Другие будут продолжаться в linux cron (или в расписании окон), а сценарии базы данных будут запускаться в MySQL Events.

Преимущества, которые необходимо учитывать:

  • организация
  • Безопасность (не больше mysql-паролей, идущих вдоль o/s)
  • Резервные копии (когда вы делаете резервную копию своей базы данных, скрипты тоже будут --events)

    Нажмите здесь, чтобы узнать, как создавать события MySQL.

    Ниже приведен небольшой пример события. Идея состоит в том, чтобы инициировать обновление каждые 6 часов:

    CREATE EVENT my_first_event ON SCHEDULE EVERY 6 HOUR DO BEGIN UPDATE tab_pricelist SET promo_price = full_price - (full_price * discount) END ;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню