База знаний

Инструкции и ответы на вопросы о хостинге, работе сайтов и приложений

Планировщик Cron

Cron — планировщик задач. Он помогает выполнять задания по расписанию. Такие задания позволяют автоматизировать процессы на сайте, например, обновление цен, курсов валют, количества товаров. Настраивается планировщик в Панели управления.

Задание Cron состоит из трех частей: периодичность выполнения, путь к интерпретатору (обработчику) и путь до скрипта.

Периодичность выполнения задания

Временной интервал задается пятью параметрами: минута, час, число, месяц, день недели.

По умолчанию значение всех параметров определено символом «*» — задание будет выполняться каждую минуту ежедневно. Чтобы запускать его в необходимый вам срок, задайте временной диапазон одним, несколькими числами или периодом.


Примеры

Каждый день в 22:30:

минута час число месяц день недели

  30   22    *     *        *

По пятницам каждые 15 минут в 2 и 3 часа ночи (2:00, 2:15, 2:30, ...):

минута час число месяц день недели

 */15  2,3    *    *       5

Ежедневно каждый час с 14:00 до 18:00:

минута час  число месяц день недели

  0   14-18   *     *       *


Выбор интерпретатора


Wget и cURL

Используйте интерпретаторы Wget и cURL в задании, если вручную вы запускаете скрипт из браузера.

Для большинства задач подходит Wget. cURL необходим для запуска скриптов с дополнительными параметрами. Например, когда перед выполнением скрипта нужно авторизоваться в административной части сайта.

Wget скачивает исполняемый файл. Чтобы он не сохранялся на дисковом пространстве аккаунта, добавьте ключ -O со значением /dev/null:

/usr/local/bin/wget   -O /dev/null   http://domain.ru/script.php

Также этот интерпретатор сообщает обо всех этапах выполнения запроса. Если для задания включена отправка уведомлений, на электронную почту будет поступать письмо с выводом утилиты. Чтобы его не получать, включите «тихий режим»: добавьте к заданию ключ -q:

/usr/local/bin/wget   -q   http://domain.ru/script.php

cURL тоже может работать в «тихом режиме». Для этого добавьте ключи -o /dev/null (не сохранять тело файла) и -s (отключить вывод утилиты):

/usr/local/bin/curl   -o /dev/null  -s   http://domain.ru/script.php

PHP

Интерпретатор PHP выполняет скрипт из консоли. Используйте его, если вручную вы запускаете скрипт, подключившись к серверу по SSH.

/usr/local/bin/php   /home/username/domains/domain.ru/public_html/script.php

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

/usr/local/bin/php70   /home/username/domains/domain.ru/public_html/script.php

Python и Node.js

Для запуска скриптов, написанных на Python или Node.js, используйте интерпретаторы python или node соответственно.

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

/usr/local/bin/node   /home/username/domains/domain.ru/public_html/script.js

/usr/local/bin/python   /home/username/domains/domain.ru/public_html/script.py

Если у вас возникли сложности с выбором — обратитесь за консультацией к нашим специалистам.

Путь до исполняемого скрипта

Формат пути до скрипта зависит от выбранного интерпретатора.

Для Wget и cURL — ссылка на скрипт:

http://domain.ru/script.php 

Для консольных обработчиков (php, python, node) — полный путь до файла:

/home/username/domains/domain.ru/public_html/script.php

Отправка уведомлений

Настройте отправку уведомлений о выполнении заданий на электронную почту, указав ее адрес в строке «Отправка отчетов». Уведомление будет приходить только в случае, если скрипт выводит какую-либо информацию или в процессе его работы возникает ошибка.

Отключить отправку отчетов для существующего задания возможно, добавив в конец команды параметр /dev/null 2>&1:

/usr/local/bin/wget   http://domain.ru/script.php   > /dev/null 2>&1

Примеры

Скрипт script.php будет выполняться интерпретатором php по понедельникам каждые 2 часа (в 02:00, 04:00, 06:00, ...). Отчеты о выполнении будут направляться на почту admin@domain.ru.

Скрипт index.php с параметром cron_task=delete_old_cache будет выполняться интерпретатором wget (через браузер) в 04:20 каждый месяц 1-го числа. Запрашиваемый файл не будет сохранен на аккаунте.

Была ли эта статья полезной?