Codeigniter Tamanho de memória permitido esgotado durante o processamento de arquivos grandes
Estou postando isso no caso de alguém procurar a mesma solução, já que perdi dois dias nessa besteira.
Eu tenho um trabalho cron que atualiza o banco de dados usando um arquivo muito grande uma vez por dia, usando o seguinte código:
if (($handle = fopen(dirname(__FILE__) . '/uncompressed', "r")) !== FALSE)
{
while (($data = fgets($handle)) !== FALSE)
{
$thisline = json_decode($data, true);
$this->regen($thisline);
}
fclose($handle);
}
Isso está em um controlador Codeigniter que é usado apenas para tarefas cron. A função $ this-> regen executa várias verificações diferentes e armazena as informações corretas da linha no banco de dados. O arquivo em si tem mais de 300 MB de JSONs separados por novas linhas.
O problema: processaria apenas cerca de 20.000 linhas antes que a coisa toda ficasse sem memória.