Como ler eficientemente um arquivo grande linha por linha em PHP sem sobrecarregar a memória?
Olá a todos! Sou um desenvolvedor PHP iniciante e me deparei com um problema ao processar arquivos grandes. Tenho um arquivo CSV de cerca de 200 MB que precisa ser processado linha por linha. Primeiro, tentei usar file_get_contents() e explode() pelo caractere de nova linha, mas o script trava com o erro "Allowed memory size exhausted". Aqui está meu código:
```php
$data = file_get_contents('big_file.csv');
$lines = explode("\n", $data);
foreach ($lines as $line) {
// Processamento da linha
echo $line . "\n";
}
```
Entendo que file_get_contents() carrega o arquivo inteiro na memória, o que causa o problema. Mas como ler o arquivo corretamente linha por linha? Ouvi falar sobre fopen() e fgets(), mas não tenho certeza de como usá-los corretamente para arquivos grandes. Também estou interessado em como processar arquivos maiores que 1 GB — existem algumas armadilhas? E é possível otimizar a leitura para não gastar memória extra? Desde já, obrigado pela ajuda!
<<>>
Usando fopen() e fg
No answers yet.
Faça login para deixar uma resposta