Создание пользовательского Cron-файла
Иногда возникает необходимость запуска какой-либо операции в Drupal с довольно частой периодичностью, например 1-2 минуты. В таком случае разумным решением будет создание собственного Cron-файла.
Да, в корне Drupal имеется файл cron.php, однако не всегда целесообразно его часто дергать. В стандартной комплектации при запуске крона Drupal очищает таблицы от устаревших записей, обновляет поисковый индекс. Список задач, выполняемых при запуске cron’a, в любом проекте можно расширить через
. hook_cron()
Однако для задач с высокой периодичностью я предпочитаю все же создавать отдельный Cron-файл. Где создавать файл решать вам, так как есть две концепции:
- с одной стороны все файлы модуля должны лежать в одной папке sites/modules;
- с другой стороны, если файл Cron’a лежит в корне, то при переносе сайта вы не забудете настроить его запуск.
Я предпочитаю все же держать Cron-файл в корне проекта, поэтому создаем cron.custom.php и помещаем в него код:
- define('DRUPAL_ROOT', getcwd());
-
- include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
- drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
-
- if (!isset($_GET['cron_key']) || variable_get('cron_key', 'drupal') != $_GET['cron_key']) {
- watchdog('my_custom_cron', 'Cron could not run because an invalid key was used.', array(), WATCHDOG_NOTICE);
- drupal_access_denied();
- }
- elseif (variable_get('maintenance_mode', 0)) {
- watchdog('my_custom_cron', 'Cron could not run because the site is in maintenance mode.', array(), WATCHDOG_NOTICE);
- drupal_access_denied();
- }
- else {
- my_custom_cron_run();
- }
Да, ничего удивительного нет – код просто скопирован из cron.php. Первые строчки кода – это стандартное подключение любого левого файла к Drupal, путем поднятия ядра. Дальше идет проверка на соответствие Cron Key, который является уникальным для каждого сайта и не позволяет злоумышленникам запускать Cron чаще того, как это задано владельцем сайта. Ну и после всех проверок должна вызываться функция вашего модуля.
Теперь остается настроить программный запуск вашего Cron-файла. Для этого в настройках вашего хостинга поищите раздел "Задачи по расписанию", "Cron Jobs" или что-то в этом духе. В зависимости от хостинга команды запуска могут различаться, однако маски времени запуска везде одинаковые:
- */2 * * * * - означает запуск каждую вторую минуту;
- 5 * * * * - означает запуск один раз в час на пятой минуте.
Как правило, у каждого нормального хостера есть инструкция по настройке команды. Если нет, то всегда можно смело написать в техподдержку.
Вот таким образом можно создать собственный Cron, который будет работать независимо от основного.
Комментарии
Можно добавить в модуль драш команду и прописать ее в крон.
Добавить комментарий