#320: Не выполняются фоновые задачи

Отредактирована: 6 дней назад

Фоновые задачи используются для синхронизации LDAP, переиндексации записей, загрузки фавиконов и других операций. Если планировщик не работает, задачи могут оставаться в ожидании. Если задача запускается, но завершается с ошибкой, причину следует искать в логе выполнения.

Откройте Настройки и пользователи → Фоновые задачи и проверьте состояние планировщика, последние запуски и результаты выполнения.

  • Не запускается ни одна задача: Проверьте планировщик и окружение запуска
  • Ошибка возникает только у определённой задачи: Откройте лог соответствующей задачи
  • Задача долго не завершается: Проверьте журнал выполнения, процессы и ресурсы сервера

Список задач и логи доступны на вкладке Задачи. Просмотр фоновых задач.

Пассворк сообщает, что планировщик не настроен

Проверьте запуск планировщика на сервере, где установлен Пассворк. Работа веб-интерфейса не подтверждает работу фоновых задач.

Linux без Docker

Проверьте:

  • Служба Cron запущена
  • Запись находится в crontab пользователя, от имени которого должны выполняться задачи
  • Указан фактический путь к установленному Пассворку
  • Команда запускается каждую минуту
  • Пользователь имеет доступ к файлам приложения и права на запись логов

Для Пассворка 7 используется команда php ./bin/console tasks:run.

Чтобы проверить запуск вручную при стандартном расположении /var/www, выполните команду от пользователя веб-сервера. У пользователя должны быть права на запись в папку log.

DEB

sudo -u www-data bash -c 'cd /var/www && php ./bin/console tasks:run'

RPM

sudo -u apache bash -c 'cd /var/www && php ./bin/console tasks:run'


Команда запускает обработку запланированных задач. Если Пассворк установлен в другой директории, замените путь. Проверка Cron.

Windows Server

Откройте планировщик заданий Windows и проверьте задачу Пассворка:

  • Задача включена и настроена на повторение каждую минуту
  • Рабочая директория соответствует расположению Пассворка
  • Команда запуска использует действующую установку PHP
  • Учётная запись запуска имеет необходимые права
  • В журнале планировщика отсутствуют ошибки запуска

Для проверки при стандартном расположении выполните в PowerShell:

cd C:\inetpub\wwwroot\passwork
php .\bin\console tasks:run

Если php.exe не найден, проверьте установку PHP и переменную PATH. После изменения окружения убедитесь, что PHP доступен учётной записи, под которой работает планировщик. Проверка планировщика Windows.

Docker

Проверьте состояние контейнеров сборки и журналы за время последнего ожидаемого запуска. Обратите внимание на остановки, повторные перезапуски и ошибки доступа к конфигурации или базе данных.

Проверять PHP и пути следует внутри окружения сборки. Запуск PHP на сервере-хосте не подтверждает работоспособность фоновых задач в контейнерах. Для передачи журналов используйте Сбор отладочной информации.

Вручную задачи запускаются, а по расписанию — нет

Сравните условия ручного и автоматического запуска:

  • Пользователь, от имени которого выполняется команда
  • Рабочая директория
  • Путь к PHP и используемая версия
  • Доступ к конфигурации Пассворка
  • Права на запись в директорию логов

Если ручной запуск выполнялся от администратора или root, повторите проверку с правами пользователя планировщика. Различия в правах и окружении могут объяснять, почему команда работает вручную.

После исправления дождитесь очередного запуска по расписанию и проверьте появление нового результата в Пассворке.

Задача запускается, но завершается с ошибкой

Откройте лог проблемной задачи. Проверяйте причину по сообщению:

  • Ошибка подключения: Доступность базы данных или внешнего сервиса, указанного в ошибке
  • Отказ в доступе к файлу: Путь, владельца и права пользователя запуска
  • Ошибка PHP: Версию PHP, расширения и конфигурацию командного окружения
  • Недостаточно памяти или места: Свободные ресурсы сервера и ограничения процесса

Если остальные задачи выполняются, начните с настроек операции, завершившейся с ошибкой. Например, для LDAP проверьте подключение, сервисную учётную запись и фильтры.

Логи задач и ошибки планировщика по умолчанию находятся в <каталог Пассворка>/files/logs/tasks/. Если настроено хранение логов в S3, учитывайте используемое хранилище. Расположение логов.

Задача долго остаётся в состоянии выполнения

Продолжительность зависит от объёма данных и скорости внешних сервисов. Сам по себе длительный статус ещё не подтверждает зависание.

Проверьте:

  • Появляются ли новые записи в логе
  • Продолжает ли работать процесс задачи
  • Есть ли нагрузка на процессор, память и диски
  • Доступны ли база данных и внешние сервисы
  • Не завершился ли процесс аварийно

До выяснения состояния не запускайте повторно ту же операцию и не удаляйте записи задач из базы данных. Сохраните лог и время начала выполнения.

Задачи перестали работать после перехода с Пассворка 6 на Пассворк 7

На Linux без Docker и Windows Server проверьте, заменена ли прежняя настройка запуска. В Пассворке 7 используется bin/console tasks:run, прежний путь app/tools/run-scheduled-tasks.php больше не соответствует новой версии.

Обновите настройку планировщика по инструкции для установленной ОС и проверьте следующий автоматический запуск. Действия после миграции.

Если устранить проблему не удалось

Для обращения в техническую поддержку подготовьте:

  • Версию Пассворка, операционную систему и способ установки
  • Название проблемной задачи
  • Масштаб проблемы — одна задача или все фоновые задачи
  • Скриншот состояния планировщика и списка задач
  • Лог проблемной задачи и ошибки планировщика
  • Команду, рабочую директорию и учётную запись автоматического запуска
  • Результат ручного запуска, если проверка выполнялась
  • Сведения об обновлениях или изменениях сервера перед сбоем
  • Отладочную информацию без паролей, токенов и ключей шифрования

Более подробно: