Запуск cron в Drupal с произвольной периодичностью

В исходном пакете Drupal, доступном в репозитории, периодичность запуска крона (cron) жестко фиксирована и минимальный период составляет один час. Но иногда возникает потребность изменить периодичность технического обслуживания веб-сайта с помощью cron. Как реализовать свою собственную периодичность запуска cron, отличную от исходной? Редакция от 05.01.2015.

Создан 05.01.2015 14:17:27

Рисунок ниже наглядно иллюстрирует тот факт, что вариантов выбора периодичности запуска cron в Drupal не так уж и много. Все бы и ничего, но у многих возникает проблема разрастания таблицы cache_menu, которую периодически приходится чистить, чтобы не допустить превышения дисковой квоты у хостинг-провайдера и падения сайта, см. Модуль DB Maintenance Drupal.

- Исходная периодичность запуска cron

При пиковой нагрузке на сайт таблицу cache_menu приходилось чистить даже вручную с помощью phpMyAdmin, но это, разумеется, не выход. Выход в том, чтобы заставить cron автоматически запускаться чаще, хотя бы раз в десять минут, см. рисунок ниже.

- Запуск cron с увеличенной периодичностью

Теперь о том, как это сделать. В исходном коде Drupal имеется замечательный файл, вот путь к нему - .../modules/system/system.admin.inc. Необходимо открыть его любым текстовым редактором или редактором строк, к примеру gedit, после чего внести в код дополнения, изображенные на рисунках ниже.

- Добавление 10 минут в список периодичности запуска cron

0 соответствует «Никогда», 10 - десяти минутам, 60 - одному часу и так далее, т.е. логика тут проста.

- Опции cron в секундах

Здесь все то же, только в секундах. 10 мин - 600 с, 1 час - 3600 с.

После сохранения изменений файл необходимо закачать обратно на хостинг и обязательно очистить кэш Drupal. В итоге выпадающий список Запускать крон каждые будет выглядеть так, как изображено на втором рисунке. Возможны любые другие значения периодичности запуска cron - хоть ежеминутно, для этого потребуется добавить комбинацию 1 мин - 60 с.

Завeршающий этап всего этого мероприятия - изменение настройки модуля DB Maintenance так, как изображено на рисунке ниже.

- Настройка DB Maintenance на запуск по крону

Единственный недостаток такого способа изменения периодичности запуска cron состоит в том, что при обновлении ядра Drupal до очередной вышедшей его версии все перечисленные действия придется повторять заново.

.