Содержание
Очередь обработки в InstantVideo – это механизм выполнения заданий:
- Подготовка к конвертации;
- Конвертация видео файлов в форматы;
- Массовый импорт видео на сайт;
- Скачивание видео файлов со сторонних сайтов;
- Рассылка писем подписчикам каналов.
Такие задачи требуют запуска в фоне, не мешая работе основного сайта.
Технические требования к работе очереди
Для работы очереди необходима поддержка:
- PHP CLI с отсутствием лимитов на выполнение (лимиты не заданы по умолчанию);
- Поддержка ioncube loader для PHP CLI;
- Поддержка функции exec PHP;
- Пользователь, под которым работает Apache и создано задание CRON, должен иметь доступ к shell, т.е. оболочка должна быть указана реальная. Оболочки /bin/date, /bin/false и т.п. недопустимы;
- Путь к PHP должен быть указан в общих настройках компонента. Обратите внимание, путь к PHP, определенный движком автоматически не всегда верен. Уточните корректный путь у вашего хостинг-провайдера.
В админке по пути Компоненты => iVideo => Диагностика вы можете проверить корректность параметров. Движок выделит красным цветом вероятные ошибки конфигурации. Перечисленные требования обычно удовлетворены в большинстве конфигураций серверов, однако, если у вас существуют проблемы с работой очереди, обратите внимание на перечисленные параметры.
Список задач очереди в админке
Задачи очереди показаны в админке по пути:
Компоненты => iVideo => Очередь обработки
Очередь может быть пустая, т.к. большинство задач после успешного выполнения удаляются.
Для каждой из задач списка показаны её PID – идентификатор запуска в операционной системе, дата постановки задачи в очередь, ID объекта задачи (если задача привязана к объекту) и статус задачи.
PID – это некий цифровой индекс запуска задачи в операционной системе. По нему вы можете мониторить задачу, завершать процесс выполнения (если это необходимо) в операционной системе из консоли.
Для всех задач, кроме массового импорта, после суток ожидания дата постановки в очередь подсвечивается красным цветом, что означает наличие проблемы с выполнением задачи. В этом случае нужно обратить внимание на раздел «Логи» админки и убедиться, что задание для планировщика корректно настроено на сервере.
В ID объекта задачи может быть написано числовой идентификатор ролика или канала.
Статус обработки – это та задача, которая сейчас запланирована или выполняется над объектом очереди. Задача может быть запущена или быть в процессе ожидания.
При конвертации видео и/или скачивания видео со сторонних сайтов, задачи имеют динамический прогресс бар процесса выполнения.
После успешного выполнения задача убирается из очереди. Исключение составляют циклические задачи массового импорта, однако это формально. А программно для таких случаев отработавшая задача удаляется и тут же создаётся новая.
Действия над задачами
Над задачами очереди можно выполнять следующие действия:
- Запускать задачу. Это действие сделано, скорее, для тестирования, т.к. за запуском задач следит специальный скрипт, запускаемый планировщиком CRON. Он выполняет задачи из списка по заданному порядку. В случае запуска вручную, задачи нужно запускать от верхней к нижним.
- Очищать последнюю ошибку и включать в очередь выполнения . В случае, когда задача завершается с ошибкой, движок её не удаляет, а изымает из очереди и устанавливает ей ошибку для того, чтобы администратор сайта принял дальнейшее решение. В случае если ошибка, препятствующая выполнению задания, решена, нужно воспользоваться этой кнопкой. После очистки задача вернётся в очередь и будет выполнена попытка её повторного запуска.
- Убивать процесс. Когда движок запускает задачу из очереди, он помечает для неё PID процесса в операционной системе. Иногда бывает, что задача «зависает» по какой-то причине или физически процесс завершен, но по какой-то причине в движке это не зафиксировалось. Задачи в таком состоянии не участвую в очереди и считаются зависшими. Если причина зависания устранена или же во время выполнения был системный сбой, то необходимо убить процесс, нажав на эту кнопку. Обратите внимание, что снимать задачу нужно только, если уверены на 100%, что она сейчас не выполняется в штатном режиме, т.к. некоторые задачи могут выполняться достаточно долго.
- Удалять задачу. Это нужно делать только в том случае, если задача действительно потеряла актуальность и/или возможные ошибки выполнения невозможно исправить.
Автоматический запуск заданий
Для работы автоматического запуска очереди необходимо создать на сервере задачу для планировщика (обычно CRON). Примерная команда для планировщика показа в админке в разделе «Диагностика». Это команда общесистемная для всей CMS. Если у вас до установки InstantVideo (как компонента) была настроена задача на сервере, то её необходимо скорректировать так, как показано в диагностике, функциональность для CMS при этом не изменится в худшую сторону. Непосредственно задача планировщика внутри самой CMS называется «Очередь обработки InstantVideo» и находится в админке по пути:
Настройки сайта => Планировщик
Задача имеет интервал 1 минуту, увеличивать его не рекомендуется.
Работа с ошибками
Иногда бывает, что задачи по каким-то причинам не работают или работают, но выполнение завершается с ошибкой. Ошибка выполнения может быть написана в самой задачи – в этом случае повторный запуск задачи невозможен до исправления ошибки и вмешательства администратора.
В других случаях задача остаётся в очереди и пытается запуститься снова с заданным интервалом. Если запуски безуспешны, то необходимо изучить раздел логов админки. Обычно там указывается вероятная причина проблемы.