Estou importando para o meu sistema um arquivo CSV, cada linha representa um objeto, então eu itero o arquivo, instancio, populo e salvo os objetos. Quando chego mais ou menos no objeto 5000 o sistema para, já vi "timeout" e limite de memória mas não adiantou muita coisa! Utilizo o Postgres, alguma sugestão?
Tenta comitar tb a cada 1000 registros pra ver se ele completa. Com o ActiveRecord mesmo.
Tenta fazer alguns testes com um arquivo menor e veja se ele importa tudo, tipo uns 1000 registros. Como não amostra a causa, talvez o problema não seja o ActiveRecord, o que vai fazer com que mudar pra SQL direto não resolva o problema exatamente(Apesar que, provavelmente vai ficar mais rápido a importação)
Tive um problema parecido ao fazer a instalação para testes de uma aplicação. Ao popular a base de dados com milhares de entradas geradas automaticamente, o instalador encontrava sempre um limite: ou a memória ou o tempo de execução. Quando mudei para SQL direto, não só ficou mais rápido como funcionou.
Mas o retorno com código 200 é muito estranho. Não há nada anormal nos logs da aplicação, do PHP e do servidor Web?
É pessoal, mudei algumas configurações do postgresql, aumentei ainda mais a memória do PHP e pasme, funcionou!.. Aparentemente ainda era memória. Muito obrigado pela ajuda!
O que você pode fazer, se tiver usando foreach() para inserir no seu banco de dados, usar os flush() do PHP que ele vai liberando memoria a cada inserção no banco de dados.