В исходном пакете Drupal, доступном в репозитории, периодичность запуска крона (cron) жестко фиксирована и минимальный период составляет один час. Но иногда возникает потребность изменить периодичность технического обслуживания веб-сайта с помощью cron. Как реализовать свою собственную периодичность запуска cron, отличную от исходной? Редакция от 05.01.2015.
Создан 05.01.2015 14:17:27
Рисунок ниже наглядно иллюстрирует тот факт, что вариантов выбора периодичности запуска cron в Drupal не так уж и много. Все бы и ничего, но у многих возникает проблема разрастания таблицы cache_menu, которую периодически приходится чистить, чтобы не допустить превышения дисковой квоты у хостинг-провайдера и падения сайта, см. Модуль DB Maintenance Drupal.
При пиковой нагрузке на сайт таблицу cache_menu приходилось чистить даже вручную с помощью phpMyAdmin, но это, разумеется, не выход. Выход в том, чтобы заставить cron автоматически запускаться чаще, хотя бы раз в десять минут, см. рисунок ниже.
Теперь о том, как это сделать. В исходном коде Drupal имеется замечательный файл, вот путь к нему - .../modules/system/system.admin.inc. Необходимо открыть его любым текстовым редактором или редактором строк, к примеру gedit, после чего внести в код дополнения, изображенные на рисунках ниже.
0 соответствует «Никогда», 10 - десяти минутам, 60 - одному часу и так далее, т.е. логика тут проста.
Здесь все то же, только в секундах. 10 мин - 600 с, 1 час - 3600 с.
После сохранения изменений файл необходимо закачать обратно на хостинг и обязательно очистить кэш Drupal. В итоге выпадающий список Запускать крон каждые будет выглядеть так, как изображено на втором рисунке. Возможны любые другие значения периодичности запуска cron - хоть ежеминутно, для этого потребуется добавить комбинацию 1 мин - 60 с.
Завeршающий этап всего этого мероприятия - изменение настройки модуля DB Maintenance так, как изображено на рисунке ниже.
Единственный недостаток такого способа изменения периодичности запуска cron состоит в том, что при обновлении ядра Drupal до очередной вышедшей его версии все перечисленные действия придется повторять заново.
.