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 не приводит к корретному запуску скрипта, то нужно указать путь с учётом версии PHP, на которой работает сайт. Узнать версию можно в приложении "Настройки":
Или в приложении "Логи", иконка "Конфигурация PHP".
2) /home/superuser/site.ru/www/cli.php - это путь к PHP-скрипту, который должен быть выполнен. В данном случае это скрипт cli.php
, расположенный в указанной директории. В большинстве случаев, в команде этот путь указан верно и не требует изменений.
3) ozon - идентификатор приложения, в котором осуществляется запуск. Часто это shop (для плагинов приложения "магазин")
4) updateStocksByOzonProducts - это название функции, которая должна выполняться. Нужно строго указывать ту функцию, которая указана в плагине.
Если вам нужно добавить задание в Cron - это можно сделать тремя способами:
Важно добавлять задание именно от того пользователя, на котором работает сайт. Во многих плагинах мы выводим его наименование, пример:
Не добавляйте задание от пользователя root! Подробнее об этом.
Частота запуска должна определяться вами, исходя из процесса, для которого создана команда и его тяжеловестности.
Обновление остатков должно производиться относительно количества заказов, которые совершаются в магазине. Если у вас один-два заказа в день, обновлять остатки каждые 5 минут не нужно.
Если процесс тяжеловесный, например, обновление цен для десятков тысяч позиций, то тоже нет смысла ставить запуск на каждые несколько минут, поскольку будет не успевать завершиться предыдущий запуск!
Обновлять Sitemap и страницы SEO-фильтра не имеет смысла чаще раза в сутки.
Создание задание на примере VDS, находящегося на хостинге Netangels:
1. Авторизовываемся, выбираем пункт VDS
2. Выберите VDS сайта, для которого вы хотите создать задание и кликните на него:
Находясь на странице выбранного VDS выберите в левом меню пункт "Управление VDS"
Далее перейдите на вкладку Cron и нажмите "Добавить задание"
Вставьте ранее скопированную команду. Задайте частоту выполнения:
Нажмите "Создать задание". Оно появится в списке.
В левом меню найдите пункт "Планировщик Cron"
В правом верхнем углу нажмите кнопку "Создать задание"
Вставьте скопированную команду и укажите нужную частоту запуска, далее нажмите "ОК":
В левом меню панели управления нужно найти пункт "Инструменты" и в нём пункт Crontab:
Добавлять команду нужно следующим образом (это только пример):
Исполнитель - Исполняемый бинарный файл.
В путь до файла указываем, примерно так:
/opt/phpXX/bin/php /home/x/xxxxx/путь_до_сайта/public_html/cli.php shop команда id_команды
, где
Нам потребуется программа для подключения, проще всего использовать Putty. Она бесплатна, и доступна для скачивания по первой ссылке в Google или здесь.
Запускаем программу, вводим адрес хоста или IP адрес и порт:
Connection type - SSH. Нажимаем "Open". Откроется окно терминала:
Введите логин пользователя. Внимание, cкопированные значения можно вставить однократным нажатием правой кнопки мыши (CTRL+V не работает). Нажмите Enter.
Система попросить ввести пароль. Внимание, вводимые символы не отображаются. Вы можете скопировать пароль, вставить однократным нажатием правой мыши (этого видно не будет) и нажать Enter.
В случае успешного подключения появится строка для ввода команд:
Команда: crontab -l
Вводите команду, нажимаете "Enter", появляется список ранее созданных Cron команд:
Команда для просмотра заданий другого пользователя: crontab -u username -l
Команда: crontab -e
Редактирование команд другого пользователя: crontab -u username -e
После ввода команды открывается возможность изменять задания через редактор Vim. Его использование имеет некоторые особенности.
Чтобы войти в режим редактирования нужно нажать букву "i". Выход из режима редактирования - Esc
Копирование производится простым выделением (CTRL+V не работает)
Чтобы выйти из редактора VIM нужно два раза нажать Shift+Z.
В режиме редактирования (crontab -e) нужно войти в редактор, нажав "i", добавить команду с новой строки.
После сохранения и выхода из редактора появится сообщение
crontab: installing new crontab
Команда ps -e
Показывает все запущенные в данный момент процессы (не только crontab)
Команда: 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-фильтра создаются огромные логи (гигабайты)