#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 больше не соответствует новой версии.
Обновите настройку планировщика по инструкции для установленной ОС и проверьте следующий автоматический запуск. Действия после миграции.
Если устранить проблему не удалось
Для обращения в техническую поддержку подготовьте:
- Версию Пассворка, операционную систему и способ установки
- Название проблемной задачи
- Масштаб проблемы — одна задача или все фоновые задачи
- Скриншот состояния планировщика и списка задач
- Лог проблемной задачи и ошибки планировщика
- Команду, рабочую директорию и учётную запись автоматического запуска
- Результат ручного запуска, если проверка выполнялась
- Сведения об обновлениях или изменениях сервера перед сбоем
- Отладочную информацию без паролей, токенов и ключей шифрования
Более подробно: