Все самые актуальные новости в нашем Telegram-канале Перейти
База знаний
Войдите в личный кабинет для возможности задавать вопросы и отвечать на комментарии.
Полезная информация

CRON: что это и как настроить?

Поддержка Bodysite
Поддержка Bodysite
22 мая 2024 18:48
+1

Что такое CRON задание?

CRON – это инструмент, который помогает сайту автоматически выполнять определённые задачи в заданное время. Представьте, что вам нужно, чтобы что-то запускалось по расписанию, например, каждый день в одно и то же время.

Во многих плагинах Bodysite есть задачи, которые нужно выполнять по расписанию, например, отправлять остатки в маркетплейсы, обновлять фиды с товарами, обновлять валюты и многое другое. Для этого в интерфейсе выведены команды для Cron, которые нужно скопировать в планировщик. Команда выглядит следующим образом (пример): 

/usr/bin/php /home/superuser/site.ru/www/cli.php ozon updateStocksByOzonProducts

Разберём её по частям:

1)  /usr/bin/php - это путь к интерпретатору PHP. Он указывает, что команда должна быть выполнена с использованием PHP.

Эта запись не у всех сайтов одинаковая, пути до интерпретатора PHP могут различаться в зависимости от версии PHP и конфигурации системы. Вот некоторые примеры возможных путей до интерпретатора PHP, включая указание версии:

Общий путь без указания версии:

  • php
  • /usr/bin/php
  • /usr/local/bin/php

Пути с указанием версии:

  • /opt/php74/bin/php
  • /usr/bin/php7
  • /usr/bin/php7.4
  • /usr/local/bin/php7
  • /usr/local/bin/php7.4

Пути для специфических установок и окружений:

  • /opt/php7.4/bin/php
  • /opt/php7.3/bin/php
  • /opt/local/php7.4/bin/php

Если в вашем случае простое указание php или /usr/bin/php не приводит к корретному запуску скрипта, то нужно указать путь с учётом версии PHP, на которой работает сайт. Узнать версию можно в приложении "Настройки":

Или в приложении "Логи", иконка "Конфигурация PHP".

2) /home/superuser/site.ru/www/cli.php - это путь к PHP-скрипту, который должен быть выполнен. В данном случае это скрипт cli.php, расположенный в указанной директории. В большинстве случаев, в команде этот путь указан верно и не требует изменений.

3) ozon - идентификатор приложения, в котором осуществляется запуск. Часто это shop (для плагинов приложения "магазин")

4) updateStocksByOzonProducts - это название функции, которая должна выполняться. Нужно строго указывать ту функцию, которая указана в плагине.

Как добавить задание в планировщик CRON?

Если вам нужно добавить задание в Cron - это можно сделать тремя способами:

  • а) Через интерфейс хостинга или панели управления.
  • б) Через SSH доступы и терминал (требуются специфичные знания)
  • в) Через обращение в поддержку хостинга или к специалистам, обслуживающим сервер.

Пользователь

Важно добавлять задание именно от того пользователя, на котором работает сайт. Во многих плагинах мы выводим его наименование, пример:

Не добавляйте задание от пользователя root! Подробнее об этом

Частота запусков

Частота запуска должна определяться вами, исходя из процесса, для которого создана команда и его тяжеловестности. 

Обновление остатков должно производиться относительно количества заказов, которые совершаются в магазине. Если у вас один-два заказа в день, обновлять остатки каждые 5 минут не нужно. 

Если процесс тяжеловесный, например, обновление цен для десятков тысяч позиций, то тоже нет смысла ставить запуск на каждые несколько минут, поскольку будет не успевать завершиться предыдущий запуск!

Обновлять Sitemap и страницы SEO-фильтра не имеет смысла чаще раза в сутки. 

Пример добавления Cron команды через хостинг Netangels

Создание задание на примере VDS, находящегося на хостинге Netangels:

1. Авторизовываемся, выбираем пункт VDS

2. Выберите VDS сайта, для которого вы хотите создать задание и кликните на него:

Находясь на странице выбранного VDS выберите в левом меню пункт "Управление VDS"

Далее перейдите на вкладку Cron и нажмите "Добавить задание"

Вставьте ранее скопированную команду. Задайте частоту выполнения:

Нажмите "Создать задание". Оно появится в списке. 

Пример добавления Cron команды через ISP Manager

В левом меню найдите пункт "Планировщик Cron"

В правом верхнем углу нажмите кнопку "Создать задание" 

Вставьте скопированную команду и укажите нужную частоту запуска, далее нажмите "ОК":

Пример добавления Cron команды на хостинге Timeweb

В левом меню панели управления нужно найти пункт "Инструменты" и в нём пункт Crontab:

Добавлять команду нужно следующим образом (это только пример):

Исполнитель - Исполняемый бинарный файл.

В путь до файла указываем, примерно так:

/opt/phpXX/bin/php /home/x/xxxxx/путь_до_сайта/public_html/cli.php shop команда id_команды

, где

  • /opt/phpXX/bin/php - здесь нужно указать версию PHP, на которой работает ваш сайт, например /opt/php74/bin/php
  • /home/x/xxxxx/путь_до_сайта/public_html/cli.php shop команда id_команды - эта часть полностью копируется из плагина, для которого вы настраиваете CRON.

Инструкции по настройке Сron от различных хостингов

Пример добавления Cron команды через терминал

Подключение

Нам потребуется программа для подключения, проще всего использовать Putty. Она бесплатна, и доступна для скачивания по первой ссылке в Google или здесь.

Запускаем программу, вводим адрес хоста или IP адрес и порт:

Connection type - SSH. Нажимаем "Open". Откроется окно терминала:

Введите логин пользователя. Внимание, cкопированные значения можно вставить однократным нажатием правой кнопки мыши (CTRL+V не работает). Нажмите Enter.

Система попросить ввести пароль. Внимание, вводимые символы не отображаются. Вы можете скопировать пароль, вставить однократным нажатием правой мыши (этого видно не будет) и нажать Enter.

В случае успешного подключения появится строка для ввода команд:


Просмотр списка заданий CRON

Команда: crontab -l

Вводите команду, нажимаете "Enter", появляется список ранее созданных Cron команд:

Команда для просмотра заданий другого пользователя: crontab -u username -l

Редактирование Cron заданий

Команда: crontab -e

Редактирование команд другого пользователя: crontab -u username -e

После ввода команды открывается возможность изменять задания через редактор Vim. Его использование имеет некоторые особенности. 

Чтобы войти в режим редактирования нужно нажать букву "i". Выход из режима редактирования - Esc

Копирование производится простым выделением (CTRL+V не работает)

Чтобы выйти из редактора VIM нужно два раза нажать Shift+Z.

Как добавить новую CRON-команду через терминал.

В режиме редактирования (crontab -e) нужно войти в редактор, нажав "i", добавить команду с новой строки.

После сохранения и выхода из редактора появится сообщение 

crontab: installing new crontab

Как посмотреть работающие команды через терминал.

Команда ps -e 

Показывает все запущенные в данный момент процессы (не только crontab) 

  • PID - это уникальный идентификатор процесса, 
  • TTY - тип терминала, 
  • TIME - это общее время использования процессорного времени процессом (00:00:00 напротив процесса bash указывает, что процессорное время вообще не было использовано до сих пор), 
  • CMD - это имя команды, которая запустила этот процесс.

Команда: ps aux | grep cli.php

Команда:strace -p {номер команды}

Другие команды:

crontab -r - удаление файла crontab текущего пользователя.

Полезные ссылки:

Как добавить cron команду в "облаке" для приложения Интеграция с Ozon?

Как исправить ошибку Cron: PHP Parse error: syntax error, unexpected '{' in waAppConfig.class.php

При работе Cron для SEO-фильтра создаются огромные логи (гигабайты)