Розв'язання проблем
Почніть із першої межі, де сталася помилка: реєстрації, запиту, перетворення, сховища або доставки. Зберігайте початковий виняток, адже він містить клас фіду та контекст виведення.
Клас фіду не знайдено
Переконайтеся, що реєстрація містить повну назву класу, автозавантаження Composer може його визначити, а клас успадковує DragonCode\LaravelFeed\Feeds\Feed або шаблон. Після переміщення класу виконайте composer dump-autoload.
Генерування використовує забагато пам'яті
- Повертайте побудовник Eloquent
Builderз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 визначає стовпці за схемою виведення. Кожен елемент має повертати однакові ключі. Необов'язкові значення зберігають порожній стовпець, а не видаляють його.
Опубліковані файли неповні або застарілі
Перевірте початковий виняток сховища та права доступу до диска. Для віддалених дисків ураховуйте узгодженість у кінцевому підсумку й неатомарне переміщення через копіювання з видаленням. Генератори на кількох хостах потребують зовнішнього розподіленого блокування, якщо можуть публікувати одну ціль.
Під час публікації Laravel Feeds створює поруч із цільовим шляхом тимчасовий каталог .feeds_staging_*. Він видаляється після успішної публікації та після звичайних помилок генерування. Якщо відкат завершується помилкою, каталог зберігається, щоб резервні копії залишилися доступними. Каталог також може залишитися після аварійного завершення процесу або помилки очищення.
Велика або дедалі більша кількість каталогів .feeds_staging_* указує на повторювані помилки публікації чи очищення. Перевірте журнали генерування та початковий виняток, усуньте основну проблему зі сховищем, правами доступу чи процесом та перегляньте збережені резервні копії перед ручним видаленням застарілих каталогів.