Как настроить планировщик CRON ?

Сегодня мы рассмотрим как настроить выполнение задач по расписанию с помощью CRON на виртуальном хостинге.

Cron (Command Run ON) — планировщик задач. Используется для выполнения команд и скриптов на сервере хостинга в определённое время. Планировщик cron доступен после заказа услуги хостинга Linux или Windows.

  1. Войдите в панель управления хостингом.
  2. В разделе «Главное» выберите пункт Планировщик и нажмите Создать:
  3. Заполните поля:
    • Команда — введите команду для запуска, которая должна выполняться. Примеры команд приведены в разделе ниже,
    • Описание — введите описание,
    • Расписание — выберите тип расписания и в оставшихся полях задайте периодичность выполнения задания.Нажмите Ok:

Примеры команд для cron-заданий

Запуск задания через GET

Команда для запуска:

        GET http://domain.kz/script.php

Где http://domain.kz/script.php — URL-адрес, при обращении к которому будет выполняться сron-задание.

Запуск задания через WGET

Альтернативный вариант команды для запуска:

        wget -q -O - http://domain.kz/script.php > /dev/null 2>&1

Где http://domain.kz/script.php — URL-адрес, при обращении к которому будет выполняться cron-задание.

Запуск задания через CLI

При запуске задания через GET или WGET, PHP-скрипт запускается тем интерпретатором PHP, версия которого активирована в панели управления хостингом. Если вам необходимо выполнить скрипт под другой версией PHP, запустите cron-задание через CLI.

При этом, вы можете указать необходимую версию php интерпретатора, стандартный путь — /usr/bin/php

Полный путь к интерпретатору php в зависимости от версии для ISPmanager:

  • версия php 5.4 /usr/bin/php
  • версия php 5.6 /opt/php56/bin/php
  • версия php 7.0 /opt/php70/bin/php
  • версия php 7.1 /opt/php71/bin/php
  • версия php 7.2 /opt/php72/bin/php
  • версия php 7.3 /opt/php73/bin/php
  • версия php 7.4 /opt/php74/bin/php
    (узнать путь до php можно, выполнив команду whereis php в shell)

Команды для запуска:

  • ISPmanager
        /opt/php/7.4/bin/php -f /var/www/login/data/www/domain.kz/script.php
  • Plesk
        /opt/php/7.4/bin/php -f var/www/vhosts/login/httpdocs/domain.kz/script.php

Где:

7.4 — версия PHP

login — ваш логин хостинга

domain.kz — имя вашего домена,

script.php — имя файла с cron-заданием.

Обратите внимание: скрипты можно запускать через php (/opt/php/7.4/bin/php) и через php-cgi (/opt/php/7.4/bin/php-cgi). О том, какой режим подойдёт для работы скриптов, вы можете узнать у разработчиков вашего сайта.

Запуск задания через CLI с учётом параметров php.ini

Добавьте к командам ключ «-c» и пропишите полный путь до файла php.ini.

Команды для запуска:

  • ISPmanager

Есть два варианта пути к файлу php.ini, который зависит от того, включена ли опция php.ini для домена.

Если вы храните настройки PHP отдельно для каждого домена по пути /var/www/php-bin/имя-домена/php.ini, то команда выглядит так:

        /opt/php/7.4/bin/php -c /var/www/login/data/php-bin/domain.kz/php.ini -f /var/www/login/data/www/domain.kz/script.php

Если вы используете общую версию PHP и храните настройки для всех доменов по пути /var/www/php-bin-php(номер-версии)/php.ini, то команда выглядит так:

        /opt/php/7.4/bin/php -c */var/www/login/data/php-bin-php(номер-версии)/php.ini* -f /var/www/login/data/www/domain.kz/script.php
  • Plesk
        /opt/php/7.4/bin/php -c /var/www/vhosts/login/php-bin/php.ini  -f var/www/vhosts/login/httpdocs/domain.kz/script.php

Где:

7.4 — версия PHP

login — ваш логин хостинга

domain.kz — имя вашего домена,

script.php — имя файла с cron-заданием.

Как добавить новую задачу на хостинге Windows

Воспользуйтесь инструкцией для Plesk по инструкции выше.

Если в 4 пункте инструкции вы выбрали тип задачи Выполнить PHP-скрипт, в поле Путь к скрипту укажите путь к скрипту, а в поле Аргументы укажите аргументы скрипта в зависимости от модуля: На PHP На ASP/ASP.NET

Путь к скрипту:

        C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP74\php.exe

Где PleskPHP74 — версия PHP

Аргументы:

        c:\inetpub\vhosts\login\httpdocs\domain.kz\script.php

Где:

login — ваш логин хостинга

domain.kz — имя вашего домена

script.php — имя файла с cron-заданием.

Как проверить работу CRON ?

1. В корне сайта создайте два файла:
my_cron.txt с правами 777.
my_cron.php с правами 755 или 751

Первый файл my_cron.txt (это наш лог, куда скрипт будет писать сообщения) оставьте пустым.
Второй файл my_cron.php откройте в редакторе и впишите примерно такой текст:
Код PHP:

<?php   $fd = fopen("/home/user/mysite_kz/my_cron.txt","a");   fwrite($fd, "Обращение к файлу - ".date("d.m.Y H:i")."\r\n");   fclose($fd); ?>

Как Вы уже поняли, команда fopen(‘path_to_log’) содержит путь к логу. Часто этот путь следует указывать от корня хостинга (а не корня сайта). Естественно, на каждом хостинге (и для каждого Вашего сайта, если их несколько) этот путь будет различным.

Создайте в планировщике задачу в соответсвии с рекомедациями выше и указанием пути к нашему скрипту.

Приведенный выше пример запускает скрипт my_cron.php. Он пишет в лог my_cron.txt строчки вроде
Код PHP:

Обращение к файлу - 11.01.2019 21:13
Обращение к файлу - 11.01.2019 21:14
Обращение к файлу - 11.01.2019 21:15

Если видите аналогичные строчки — Планировщик работает.

Если лог пуст — значит Планировщик не работает. Вернитесь к началу данной статьт и проверитьте пути. Возможно, неправильно прописаны пути к интерпретатору php или вашему скрипту.