Документация InstantCMS

для администраторов и разработчиков

Инструменты пользователя

Инструменты сайта


manual:settings:scheduler

Планировщик

Панель управленияНастройкиПланировщик

Планировщик позволяет создавать периодические сервисные задачи, выполняемые в фоновом режиме через заданные промежутки времени. Важно понимать, что промежутки времени выполнения, указанные на сайте, относительны, потому что первый период задается непосредственно в самом планировщике на сервере, а второй период считается уже на самом сайте по дате последнего выполнения задачи.

Для корректной работы планировщика необходимо создать задание для CRON на сервере. Если вы не знаете как это сделать - обратитесь в поддержку хостинга.

Параметры для задания CRON

Команда для выполнения - обычно выглядит так:

php -f /path/to/site/cron.php > /dev/null

где /path/to/site - абсолютный путь к папке сайта на сервере. вместо php можно указать полный путь к интерпретатору или к интерпретатору другой версии, например:

/usr/bin/php -f /path/to/site/cron.php > /dev/null
/usr/bin/php5.6 -f /path/to/site/cron.php > /dev/null
/opt/php72/bin/php -f /path/to/site/cron.php > /dev/null

Интервал выполнения - 5 минут. Это рекомендуемое значение. Если его невозможно установить - используйте больший интервал, но при этом учитывайте что некоторые действия могут обрабатываться позже (например, отправка уведомлений о личных сообщениях).

Обращаем ваше внимание, что формирование команды другого типа, например:

wget http://www.site.ru/cron.php

по умолчанию работать не будет.

Если же по каким-то причинам вам необходимо запускать планировщик подобными способами, то нужно открыть файл cron.php, который находится в корне сайта, и удалить (или закомментировать) строку:

if(PHP_SAPI != 'cli') { die('Access denied'); }

Однако, при таком способе следует понимать, что для PHP CLI по-умолчанию нет лимитов на время выполнения скрипта и все «долгие» задачи планировщика успеют выполниться. В случае если вы закомментируете указанную выше строку и команда для CRON у вас будет другая, то вы должны сами следить за лимитами в конфигурации PHP. За это отвечают директивы max_execution_time и max_input_time.

Содержание раздела

manual/settings/scheduler.txt · Последнее изменение: 12.05.2023 12:21 — fuze