Вызвать запуск нужного вам скрипта с помощью планировщика CRON можно двумя способами: c помощью эмуляции загрузки определённого URL вашего сайта, что приводит к запуску нужного вам скрипта и с помощью прямого запуска скрипта без обращений к веб-сервисам по протоколу HTTP/HTTPS.
Эмуляция загрузки URL сайта
Данный способ максимально прост и приводит к запуску скрипта в среде обычной работы сайта на хостинге. Существенным плюсом этого метода является возможность передачи нужному скрипту дополнительных GET параметров, в которых могут храниться ключи запуска, идентификаторы, токены и т.д. Минусом этого метода является то, что обращение к скрипту выполняется с помощью HTTP запроса к веб-сервису, что накладывает дополнительное ограничение на время выполнения запроса.
В панели управления ISPManager в разделе “Инструменты” - “Планировщик (cron)” добавьте задание в формате:
- wget -O /dev/null "http://ваш_домен/ваш_скрипт?param1=data¶m2=data"
Важно: используйте двойные кавычки для URL вашего CRON скрипта, т.к. в противном случае не будут переданы все параметры HTTP GET запросов.
Пример CRON задания, при работе сайта по протоколу HTTP:
В данном примере скрипт “cron.php” будет вызван с помощью интерпретатора PHP, установленного для сайта “website.com”. При этом скрипту будет передан HTTP GET параметр “action” со значением “perform”.
- wget -O /dev/null "http://website.com/cron/cron.php?action=perform"
Пример CRON задания сайта работающего по протоколу HTTPS:
Если ваш сайт использует для работы защищённый протокол HTTPS, тогда крайне рекомендуем использовать параметр wget “–no-check-certificate”, отключающий проверку используемого на сайте SSL сертификата.
- wget -O /dev/null --no-check-certificate "https://website.com/cron/cron.php?action=perform"
Прямой запуск скрипта CRON
Описанный способ запускает необходимый вам скрипт с помощью прямого запуска интерпретатора, который исключает какие-либо обращения к веб-сервисам. Сильной стороной этого метода является отсутствие каких-либо прослоек в виде веб-сервисов при выполнении. Минусом является необходимость прямого указания интерпретатора для запуска того или иного скрипта, а для PHP ещё и требует указание версии интерпретатора, например PHP 7.1 или 8.0. К неприятным особенностям данного метода можно отнести и отсутствие возможности передачи POST/GET параметров. Единственное что можно передать − это ENV параметры, о чём будет написано ниже.
Для использования данного метода, в панели управления ISPManager в разделе “Инструменты” - “Планировщик (cron)” нужно добавить задание в формате:
- php-версия /var/www/ваш_логин/data/www/имя_домена/путь_файлу
Пример CRON задания с прямым вызовом PHP скрипта:
В данном примере скрипт “cron.php” будет выполнен с помощью PHP версии 7.4.
- php-7.4 /var/www/superuser/data/www/website.com/cron/cron.php
Пример CRON с передачей PHP скрипту ENV параметра:
Как ранее описывалось, при таком методе запуска, единственной возможностью передать какой-либо дополнительный параметр будет использование ENV переменных в формате:
- ПАРАМЕТР=значение php-версия /var/www/ваш_логин/data/www/имя_домена/путь_файлу
В данном примере скрипту “cron.php” был передан ENV параметр “MODE” со значением “production”.
- MODE=production php-8.0 /var/www/superuser/data/www/website.com/cron/cron.php
Отображение добавленного CRON задания
После добавления задания планировщика CRON, оно должно отобразится в перечне заданий. Для того, чтобы пользователи не получали большое количество мусорных сообщений, связанных с выполнением CRON, к каждому заданию автоматически будет добавлено " >/dev/null 2>&1 ". Наличие такой конструкции в конце команды является нормальным поведением панели управления хостингом и планировщика CRON.