Por que trava
- Arquivo inteiro carregado na memória do servidor
- Uma consulta ao banco para cada linha (verificar, inserir, atualizar)
- Processamento durante a requisição, sujeito a timeout
- Erro em uma linha interrompe toda a importação
Como deve funcionar
| Etapa | Como fazer |
|---|---|
| Envio | Usuário envia o arquivo; o sistema guarda e responde na hora |
| Processamento | Fila em segundo plano lê o arquivo em partes |
| Validação | Cada linha é validada; as inválidas vão para um relatório |
| Gravação | Registros gravados em lotes, não um a um |
| Acompanhamento | Barra de progresso ou aviso ao terminar |
| Resultado | Resumo: quantos importados, quantos com erro e por quê |
Decisões de negócio
- Se uma linha tem erro, as outras entram ou a importação inteira é recusada?
- Registros que já existem são atualizados ou ignorados? Qual campo identifica cada um?
- Quem pode importar e quantas importações ao mesmo tempo?
Leia também
Veja os princípios de processamento em segundo plano e de uso de memória. Se a importação cria registros repetidos, veja registros duplicados.
Melhoramos importações em sistemas existentes no nosso serviço de manutenção de sistemas PHP e Laravel. Se as planilhas ainda são a principal ferramenta, veja como substituir planilhas por um sistema.