Перейти к основному содержимому
Версия: 1.x

Решение проблем

Начните с первой границы, где возникает ошибка: регистрация, запрос, преобразование, хранилище или доставка. Сохраняйте исходное исключение: оно содержит класс фида и контекст вывода.

Класс фида не найден​

Проверьте, что запись содержит полное имя класса, автозагрузка Composer может его получить, а класс расширяет DragonCode\LaravelFeed\Feeds\Feed или предустановку. После перемещения класса выполните composer dump-autoload.

Генерация использует слишком много памяти​

  • Возвращайте Builder Eloquent из builder().
  • Не вызывайте get(), all() или toArray() для всего набора данных.
  • Уменьшите chunkSize() и повторите измерение.
  • Разделяйте большой вывод через perFile().
  • Переносите работу в асинхронную очередь только после сохранения потоковой работы самого фида.

Смотрите производительность.

Задача очереди не запускается​

Проверьте FEED_QUEUE_CONNECTION, FEED_QUEUE_NAME и команду обработчика. Подключение sync выполняет задачу сразу и не проверяет асинхронную доставку. Блокировка уникальности может не допустить вторую задачу до окончания FEED_QUEUE_UNIQUE_TTL.

Диск хранилища отклонён​

Диск должен возвращать Illuminate\Filesystem\FilesystemAdapter и поддерживать потоки для записи, перемещение, каталоги, списки и удаление. Пользовательская реализация, которая не является FilesystemAdapter, завершается ошибкой UnsupportedStorageDiskException до запроса в базу данных. Диск Laravel только для чтения проходит эту проверку типа. Запись завершается ошибкой при публикации после окончания запроса фида и локальной подготовки, а GeneratorService оборачивает ошибку хранилища в FeedGenerationException.

Генерация XML завершается ошибкой​

Проверьте необработанный XML из @mixed, содержимое CDATA и контракты скалярных значений или массивов для директив. Используйте обычные экранированные значения, если необработанный XML не нужен.

Строки CSV ошибочны после первого элемента​

CSV определяет столбцы по схеме вывода. Каждый элемент должен возвращать одинаковые ключи. Необязательные значения сохраняют пустой столбец, а не удаляют его.

Опубликованные файлы неполные или устаревшие​

Проверьте исходное исключение хранилища и права диска. На удалённых дисках учитывайте eventual consistency и неатомарные перемещения через копирование и удаление. Генераторам на разных узлах нужна внешняя распределённая блокировка.

Во время публикации Laravel Feeds создаёт рядом с целевым путём временный каталог .feeds_staging_*. После успешной публикации и обычных ошибок генерации каталог удаляется. Если откат завершается ошибкой, каталог сохраняется вместе с резервными копиями. Он также может остаться после аварийного завершения процесса или ошибки очистки.

Большое или растущее число каталогов .feeds_staging_* указывает на повторяющиеся ошибки публикации или очистки. Проверьте логи генерации и исходное исключение, устраните основную проблему с хранилищем, правами доступа или процессом и проверьте сохранённые резервные копии перед ручным удалением устаревших каталогов.

Смотрите также​