Планировщик
Панель управления
⇒Настройки
⇒Планировщик
Планировщик позволяет создавать периодические сервисные задачи, выполняемые в фоновом режиме через заданные промежутки времени. Важно понимать, что промежутки времени выполнения, указанные на сайте, относительны, потому что первый период задается непосредственно в самом планировщике на сервере, а второй период считается уже на самом сайте по дате последнего выполнения задачи.
Для корректной работы планировщика необходимо создать задание для CRON на сервере. Если вы не знаете как это сделать - обратитесь в поддержку хостинга.
Параметры для задания CRON
Команда для выполнения - обычно выглядит так:
php -f /path/to/site/cron.php ваш_домен.ru > /dev/null
Где /path/to/site
- абсолютный путь к папке сайта на сервере, > /dev/null
подавляет вывод в консоль, ваш_домен.ru
- ваше имя домен сайта.
Вместо php
лучше указать полный путь к интерпретатору или к интерпретатору другой версии (если установлен), например:
/usr/bin/php -f /path/to/site/cron.php ваш_домен.ru > /dev/null
/usr/bin/php7.4 -f /path/to/site/cron.php ваш_домен.ru > /dev/null
/opt/php83/bin/php -f /path/to/site/cron.php ваш_домен.ru > /dev/null
Интервал выполнения - каждую минуту. Это рекомендуемое значение. Если его невозможно установить - используйте больший интервал, но при этом учитывайте что некоторые действия могут обрабатываться позже (например, отправка уведомлений о личных сообщениях).
В crontab для запуска каждую минуту полная строка может выглядеть так:
* * * * * /usr/bin/php -f /path/to/site/cron.php ваш_домен.ru > /dev/null
Если вы используете переменные окружения, например для пути к директории конфигураций, не забывайте это учесть при создании команды планировщика:
ICMS_CONFIG_DIR=../../system/config/ * * * * * /usr/bin/php -f /path/to/site/cron.php ваш_домен.ru > /dev/null
Обращаем ваше внимание, что формирование команды другого типа, например:
wget http://www.site.ru/cron.php
по умолчанию работать не будет.
Если же по каким-то причинам вам необходимо запускать планировщик подобными способами, то нужно открыть файл cron.php, который находится в корне сайта, и удалить (или закомментировать) строки:
if (PHP_SAPI !== 'cli') { http_response_code(404); die('404'); }
Однако, при таком способе следует понимать, что для PHP CLI по-умолчанию нет лимитов на время выполнения скрипта и все «долгие» задачи планировщика успеют выполниться. В случае если вы закомментируете указанные выше строки и команда для CRON у вас будет другая, то вы должны сами следить за лимитами в конфигурации PHP. За это отвечают директивы max_execution_time и max_input_time.