Перайсці да асноўнага змесціва

Вырашэнне праблем

Пачніце з першай мяжы, дзе ўзнікае памылка: рэгістрацыя, запыт, канвертаванне, сховішча або дастаўка. Захоўвайце зыходнае выключэнне, бо яно змяшчае клас стужкі і кантэкст вываду.

Клас стужкі не знойдзены

Праверце, што рэгістрацыя змяшчае поўнае імя класа, аўтазагрузка 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 вызначае слупкі са схемы вываду. Кожны элемент павінен вяртаць аднолькавыя ключы. Неабавязковыя значэнні захоўваюць пусты слупок, а не выдаляюць яго.

Апублікаваныя файлы няпоўныя або састарэлыя

Праверце зыходнае выключэнне сховішча і правы дыска. На аддаленых дысках улічвайце ўзгодненасць з затрымкай і неатамарныя перамяшчэнні праз капіяванне і выдаленне. Генератарам на розных вузлах патрэбна знешняя размеркаваная блакіроўка, калі яны могуць публікаваць адзін вынік.

Падчас публікацыі Laravel Feeds стварае побач з мэтавым шляхам часовы каталог .feeds_staging_*. Ён выдаляецца пасля паспяховай публікацыі і пасля звычайных памылак генерацыі. Калі адкат завяршаецца памылкай, каталог захоўваецца, каб у ім засталіся рэзервовыя копіі. Каталог таксама можа застацца пасля аварыйнага спынення працэсу або памылкі ачысткі.

Вялікая або пастаянна растучая колькасць каталогаў .feeds_staging_* паказвае на паўторныя памылкі публікацыі або ачысткі. Праверце журналы генерацыі і зыходнае выключэнне, выпраўце асноўную праблему са сховішчам, правамі доступу або працэсам і праглядзіце захаваныя рэзервовыя копіі перад ручным выдаленнем састарэлых каталогаў.

Глядзіце таксама