Перейти к содержанию

Планировщик задач

В модуле TeleCart встроен планировщик — он по расписанию выполняет фоновые задачи: например, отправку данных в TeleCart Pulse, обновление кэша, обновление фасетного поиска и фильтров, а также другие административные операции. В новых версиях модуля могут появляться дополнительные фоновые задачи. Чтобы все они работали, планировщик нужно включить и настроить. Эта статья по шагам объясняет, как это сделать.

Планировщик задач в TeleCart

Планировщик задач в TeleCart


Где настраивается планировщик

Планировщик находится в настройках модуля TeleCart (в админ-панели OpenCart):

Там вы выбираете способ запуска (режим работы) и при необходимости настраиваете список задач.


Режимы работы планировщика

Режимы работы планировщика

Режимы работы планировщика

Есть три варианта:

Режим Когда выбирать
Системный CRON (рекомендуется) Есть доступ к серверу (SSH или панель с CRON). Подходит для любых сайтов, в том числе с большим каталогом.
cron-job.org Нет доступа к CRON на сервере (например, обычный shared-хостинг). Подходит только для лёгких задач.
Выключено Фоновые задачи не нужны или вы временно отключаете планировщик. Не рекомендуется для постоянной работы.

Ниже каждый режим разобран подробно.


Режим «Системный CRON» (рекомендуется)

В этом режиме задачи запускаются напрямую на сервере по команде PHP, без браузера и без ограничений по времени. Это самый надёжный вариант.

Что нужно

  • Доступ к серверу: по SSH или через панель управления хостингом, где можно добавить задачу CRON.

Что сделать

В настройках модуля на вкладке CRON выберите режим «Системный CRON (рекомендуется)», сохраните настройки. В блоке «Команда для CRON» будет выведена готовая строка команды — её нужно задать в планировщике задач (CRON) на вашем сервере. На каждом хостинге настройка CRON устроена по-своему (панель управления, SSH, отдельный раздел), поэтому уточняйте у хостинга или в его документации, как добавить задачу по расписанию и куда вставить эту команду, либо обратитесь к программисту за помощью.


Режим «cron-job.org»

Здесь планировщик запускается по ссылке в интернете: сервис cron-job.org по расписанию открывает специальный URL вашего сайта (это адрес каталога магазина, не админ-панели — авторизация в OpenCart не требуется), и модуль выполняет задачи.

Когда этот режим уместен

  • Нет доступа к CRON на хостинге (например, обычный shared-хостинг без SSH).
  • Задач мало и они лёгкие (например, только отправка телеметрии в Pulse).

Ограничения

Важно

Запуск идёт через обычный веб-запрос. У хостинга и у cron-job.org есть ограничение по времени (таймаут). Если задача выполняется долго, запрос может оборваться, и задача не завершится.

Не стоит выбирать cron-job.org, если:

  • на сайте много товаров или тяжёлые операции;
  • задачи могут выполняться дольше 1–2 минут.

В таких случаях лучше использовать системный CRON или выключить ненужные задачи.

Как настроить по шагам

  1. В настройках модуля на вкладке CRON выберите режим «cron-job.org».
  2. Сохраните настройки.
  3. Появится блок «URL для cron-job.org» с длинной ссылкой. При необходимости нажмите «Перегенерировать URL» (появится новый секретный ключ в ссылке — старый перестанет работать).
  4. Скопируйте этот URL (кнопка с иконкой копирования).
  5. Зайдите на сайт cron-job.org, зарегистрируйтесь или войдите.
  6. Создайте новую задачу (Add cron job):
  7. URL — вставьте скопированную ссылку.
  8. Метод — GET.
  9. Интервал — например, каждые 5 или 10 минут (как вам нужно).
  10. Сохраните задачу на cron-job.org.

После этого сервис будет по расписанию открывать ваш URL, и планировщик TeleCart будет запускаться.

Безопасность

В URL встроен секретный ключ. Никому не передавайте эту ссылку. Если она могла утечь — нажмите «Перегенерировать URL» в настройках модуля и обновите URL в задаче на cron-job.org.


Режим «Выключено»

Если выбрать «Выключено», планировщик не будет запускаться. Все фоновые задачи (отправка в Pulse и т.п.) выполняться не будут. Остальные настройки на вкладке CRON при этом отображаются размыто и недоступны; поверх них показывается сообщение «Планировщик выключен».

Используйте этот режим, если фоновые задачи вам не нужны или вы временно отключаете их.


Запланированные задачи

Ниже блока с режимом и командой/URL находится список запланированных задач. Это те действия, которые планировщик может выполнять по расписанию.

Для каждой задачи можно:

  • Включить или выключить — переключатель слева. Выключенные задачи планировщик не выполняет.
  • Задать расписание — выпадающий список справа (каждые 5 минут, каждый час, раз в сутки и т.д.). От расписания зависит, как часто задача будет запускаться.
  • Сохранить — не забудьте нажать «Сохранить» внизу страницы, иначе изменения в задачах не применятся.

Примеры задач:

  • Отправка данных в TeleCart Pulse — телеметрия и статистика (если используете Pulse). Можно оставить интервал по умолчанию или изменить по желанию.

При ошибке выполнения рядом с задачей появится пометка «Ошибка»; при наведении можно посмотреть дату и текст ошибки.


Последний запуск и ошибки

  • Последний запуск CRON — дата и время последнего успешного запуска планировщика в целом.
  • У каждой задачи отдельно показывается дата последнего успешного запуска и при ошибке — метка с подсказкой.

По этим данным можно понять, работает ли планировщик и нет ли сбоев в отдельных задачах.


Что проверить, если планировщик не срабатывает

  1. Режим — выбран ли «Системный CRON» или «cron-job.org», а не «Выключено».
  2. Сохранение — после смены режима и настроек нажата кнопка «Сохранить».
  3. Системный CRON:
  4. Команда в crontab или в панели хостинга вставлена полностью, как в блоке «Команда для CRON».
  5. Путь к php и к cli.php правильный (на некоторых хостингах нужно указать полный путь к PHP, например /usr/bin/php).
  6. cron-job.org:
  7. В задаче на cron-job.org указан именно тот URL, что скопирован из настроек модуля (после перегенерации URL старый перестаёт работать).
  8. Метод запроса — GET.
  9. Задачи — у нужных задач переключатель включён и настройки сохранены.

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