Решение проблем
Начните с первой границы, где возникает ошибка: регистрация, запрос, преобразование, хранилище или доставка. Сохраняйте исходное исключение: оно содержит класс фида и контекст вывода.
Класс фида не найден
Проверьте, что запись содержит полное имя класса, автозагрузка Composer может его получить, а класс расширяет DragonCode\LaravelFeed\Feeds\Feed или предустановку. После перемещения класса выполните composer dump-autoload.
Генерация использует слишком много памяти
- Возвращайте
BuilderEloquent из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_* указывает на повторяющиеся ошибки публикации или очистки. Проверьте логи генерации и исходное исключение, устраните основную проблему с хранилищем, правами доступа или процессом и проверьте сохранённые резервные копии перед ручным удалением устаревших каталогов.