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

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

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

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


manual:settings:scheduler

Планировщик

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

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

Для корректной работы планировщика необходимо создать задание для 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.

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

manual/settings/scheduler.txt · Последнее изменение: 26.11.2024 22:09 — fuze

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki