Pular para o conteúdo principal

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 Builder do Eloquent em builder().
  • Não chame get(), all() nem toArray() 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.

Veja também