Solução de problemas
Comece pelo primeiro limite que falha: registro, consulta, conversão, armazenamento ou entrega. Preserve a exceção original, pois ela contém a classe do feed e o contexto da saída.
A classe do feed não foi encontrada
Confirme que o registro contém o nome completo, que o autoload do Composer consegue resolvê-lo e que a classe estende DragonCode\LaravelFeed\Feeds\Feed ou uma predefinição. Execute composer dump-autoload depois de mover uma classe.
A geração usa memória demais
- Retorne um
Builderdo Eloquent embuilder(). - Não chame
get(),all()nemtoArray()no conjunto completo. - Reduza
chunkSize()e meça novamente. - Divida saídas grandes com
perFile(). - Mova o trabalho para uma fila assíncrona somente depois que o feed permanecer em fluxo contínuo.
Veja desempenho.
Um job da fila nunca é executado
Verifique FEED_QUEUE_CONNECTION, FEED_QUEUE_NAME e o comando do worker. A conexão sync executa imediatamente e não testa a entrega assíncrona. Um bloqueio de unicidade pode impedir outro job até FEED_QUEUE_UNIQUE_TTL expirar.
O disco de armazenamento é rejeitado
O disco deve resolver para Illuminate\Filesystem\FilesystemAdapter e aceitar streams graváveis, movimentos, diretórios, listagens e exclusões. Uma implementação personalizada que não é um FilesystemAdapter falha com UnsupportedStorageDiskException antes da consulta ao banco. Um disco somente leitura do Laravel passa nessa verificação de tipo. A gravação falha durante a publicação, depois que a consulta do feed e o staging local terminam, e GeneratorService envolve a falha de armazenamento em FeedGenerationException.
A geração XML falha
Valide o XML bruto passado por @mixed, o conteúdo CDATA e os contratos escalares ou de array das diretivas. Prefira valores escapados quando XML bruto não for necessário.
Linhas CSV falham depois do primeiro item
O CSV define suas colunas pelo esquema da saída. Todos os itens devem produzir as mesmas chaves. Valores opcionais mantêm uma coluna vazia em vez de removê-la.
Arquivos publicados estão incompletos ou antigos
Inspecione a exceção original e as permissões do disco. Em discos remotos, considere consistência eventual e movimentos não atômicos por cópia e exclusão. Vários hosts publicando o mesmo destino exigem bloqueio distribuído externo.
Durante a publicação, o Laravel Feeds cria um diretório temporário .feeds_staging_* ao lado do caminho de destino. Ele remove esse diretório após uma publicação bem-sucedida e após falhas comuns de geração. O diretório é preservado quando a reversão falha, para que seus backups continuem disponíveis. Um processo interrompido ou uma falha de limpeza também pode deixar um desses diretórios.
Um número elevado ou crescente de diretórios .feeds_staging_* indica falhas repetidas de publicação ou limpeza. Inspecione os logs de geração e a exceção original, corrija a falha subjacente de armazenamento, permissão ou processo e revise todos os backups preservados antes de excluir manualmente os diretórios obsoletos.