BB
Importando grande quantidade de dados
Olá,
estou fazendo a migração dos dados do sistema antigo para o que estou desenvolvendo com o Adianti. Porém é um quantidade bem grande de dados, o que torna a importação lenta e também em determinado momento dá o seguinte o erro: "Connection failed" e não insere todos os dados.
Segue o método que insere os dados de cliente:
estou fazendo a migração dos dados do sistema antigo para o que estou desenvolvendo com o Adianti. Porém é um quantidade bem grande de dados, o que torna a importação lenta e também em determinado momento dá o seguinte o erro: "Connection failed" e não insere todos os dados.
Segue o método que insere os dados de cliente:
<?phpprivate function salvaCliente($dados, $prf_codigo) { foreach($dados as $linha => $valores) { try { $pessoa = $this->buscaPessoa($valores["pes_cpfcnpj"], $prf_codigo); if($pessoa == null)//não achou o cadastro de pessoa { $pessoa = $this->salvaPessoa($valores, $prf_codigo); } unset($valores["cln_codigo"]); TTransaction::open('conecta'); $cliente = new Cliente; $cliente->fromArray($valores); $cliente->pes_codigo = $pessoa->pes_codigo; $cliente->store(); TTransaction::close(); } catch (Exception $e) { $log = fopen("tmp/importacao/log_cliente.txt", "a"); $l = $linha + 2; $escreve = fwrite($log, $e->getMessage() . " -> Erro ao salvar cliente com CPF/CNPJ: " . $valores["pes_cpfcnpj"]. " - Linha {$l}" . " \r\n"); fclose($log); TTransaction::rollback(); } } }?>
Já tentei abrir e fecha a transação a cada 500 registros, mas não funcionou.
Alguém sabe uma alternativa?
Obrigada
Bruna, verifique os logs do apache e do banco de dados para ver se aparece alguma coisa. Eu imagino que possa ser timeout do php. Faça um teste usando o comando abaixo no começo do processo:
E eu usaria somente uma transação, aberta no início do processo e fechada após a inserção do último item.