Ler um arquivo csv e tentar converter a data - Erro O Código abaixo é pra ler um arquivo csv e grava na tabela Títular, porém dá erro na hora de gravar a data de nascimento, daí eu comentei o trecho, outra coisa é que como tem mais ou menos 11.000 linhas ele só grava quatrocentos e pouco e dá o seguinte erro: "Fatal error: Maximum execution time of 30 seconds exceeded in C:Vertrigowwwsisbs_testelibadiantidatabaseTTransaction.php on...
MO
Ler um arquivo csv e tentar converter a data - Erro  
O Código abaixo é pra ler um arquivo csv e grava na tabela Títular, porém dá erro na hora de gravar a data de nascimento, daí eu comentei o trecho, outra coisa é que como tem mais ou menos 11.000 linhas ele só grava quatrocentos e pouco e dá o seguinte erro:
"Fatal error: Maximum execution time of 30 seconds exceeded in C:Vertrigowwwsisbs_testelibadiantidatabaseTTransaction.php on line 129";
Precisando urgente de ajuda, alguém se habilita?

 
  1. <?php
  2. class ImportarTitularForm extends TPage
  3. {
  4. private $form;
  5. private $datagrid;
  6. private static $DIR_ARQUIVO = '/tmp/';
  7. public function __construct()
  8. {
  9. parent::__construct();
  10. $this->form = new BootstrapFormBuilder('form_documentos');
  11. $this->form->setFormTitle('Documentos');
  12. $this->datagrid = new BootstrapDatagridWrapper(new TQuickGrid);
  13. $this->datagrid->width = '100%';
  14. $id = new TEntry('id');
  15. $arquivo = new TFile('arquivo');
  16. $descricao = new TEntry('descricao');
  17. //$descricao->addValidation('Descrição do Arquivo', new TRequiredValidator);
  18. $descricao->setSize('100%');
  19. $id->setSize('100%');
  20. $arquivo->setSize('100%');
  21. // labels
  22. $lbl_id = new TLabel('ID');
  23. $lbl_descricao = new TLabel('Descrição');
  24. $lbl_arquivo = new TLabel('arquivo');
  25. $row1 = $this->form->addFields([$lbl_id, $id]);
  26. $row1->layout = ['col-md-2'];
  27. $row2 = $this->form->addFields([$lbl_descricao, $descricao]);
  28. $row2->layout = ['col-md-12'];
  29. $row3 = $this->form->addFields([$lbl_arquivo, $arquivo]);
  30. $row3->layout = ['col-md-12'];
  31. // grid
  32. $column_id = new TDataGridColumn('id','ID','center');
  33. $column_descricao = new TDataGridColumn('descricao','Descrição','left');
  34. $column_caminho = new TDataGridColumn('caminho','Caminho','left');
  35. $this->datagrid->addColumn($column_id);
  36. $this->datagrid->addColumn($column_descricao);
  37. $this->datagrid->addColumn($column_caminho);
  38. $this->datagrid->createModel();
  39. // add the search form actions
  40. $btn = $this->form->addAction('Salvar', new TAction(array($this, 'onSave')), 'fa:disk');
  41. $btn->class = 'btn btn-sm btn-primary';
  42. // vertical box container
  43. $container = new TVBox;
  44. $container->style = 'width: 90%';
  45. //$container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  46. $container->add($this->form);
  47. $container->add($this->datagrid);
  48. parent::add($container);
  49. }
  50. public function onSave( $param )
  51. {
  52. try
  53. {
  54. $data = $this->form->getData();
  55. //$source_file = 'tmp/'.$doc->arquivo;
  56. $nome_arquivo = $param['arquivo']; //'tmp/'.$param['filename'];
  57. $objeto = fopen('tmp/SOLICITANTES.CSV','r');
  58. $cabecalho = FALSE;
  59. while(($dados = fgetcsv($objeto,1000,',')) !==false)
  60. {
  61. TTransaction::open('permission'); // open a transaction
  62. if($cabecalho)
  63. {
  64. $titular = new Titular;
  65. //print $dados[6];
  66. $titular->id = $dados[0];
  67. $titular->nome = $dados[1];
  68. $titular->cpf = $dados[2];
  69. $titular->nis = $dados[3];
  70. $titular->celular1 = $dados[4];
  71. $titular->celular2 = $dados[5];
  72. $datnasc = strtotime(str_replace("/","-",'11/11/11'));
  73. /*
  74. //garante que o array possue tres elementos (dia, mes e ano)
  75. if($datnasc <> trim('null'))
  76. {
  77. //cria um array
  78. $array = explode('/', $datnasc);
  79. if(count($array) == 3){
  80. $dia = (int)$array[0];
  81. $mes = (int)$array[1];
  82. $ano = (int)$array[2];
  83. //testa se a data é válida
  84. if(checkdate($mes, $dia, $ano)){
  85. $titular->datnasc = strtotime(str_replace("/","-",$dados[6]));
  86. }
  87. }
  88. }
  89. */
  90. //if ($dados[6] <> 'NULL')
  91. //{
  92. // $titular->datnasc = date($dados[6]);
  93. //}
  94. $titular->pai = $dados[7];
  95. $titular->mae = $dados[8];
  96. $titular->identidade = $dados[9];
  97. ////////////////////////////////////////////////////////////////////////////
  98. $titular->situacao_trab_id=1;
  99. $titular->escolaridade_id=1;
  100. $titular->ocupacaoprof_id=1;
  101. $titular->tipo_nec_esp_id=1;
  102. $titular->tempo_trabalho_id=1;
  103. $titular->renda_mensal_id=1;
  104. $titular->estado_civil_id=1;
  105. $titular->beneficio_id=1;
  106. $titular->sitconjugal_id=1;
  107. $titular->bairro_id=1;
  108. $titular->logradouro_id=1;
  109. $titular->rendatotal=1;
  110. $titular->renda_comp_id=1;
  111. $titular->observacao='';
  112. $titular->qtde_comodos_id=1;
  113. $titular->tempo_moradia_id=1;
  114. $titular->elim_dejetos_id=1;
  115. $titular->sit_fornec_id=1;
  116. $titular->numero_familias_habit_id=1;
  117. $titular->estado_habitacao_id=1;
  118. $titular->risco_localizacao_id=1;
  119. $titular->unidade_sanitaria_id=1;
  120. $titular->telefone_id=1;
  121. $titular->tempono_munic_id=1;
  122. $titular->energia_eletrica_id=1;
  123. $titular->uso_imovel_id=1;
  124. $titular->caracterisca_imov_id=1;
  125. $titular->transporte_id=1;
  126. $titular->ilum_publica_id=1;
  127. $titular->tipo_imovel_id=1;
  128. $titular->trat_dagua_id=1;
  129. $titular->destino_lixo_id=1;
  130. $titular->forma_ocupacao_id=1;
  131. $titular->local_banheiro_id=1;
  132. $titular->abast_dagua_id=1;
  133. ////////////////////////////////////////////////////////////////////////////
  134. $titular->store();
  135. }
  136. $cabecalho=TRUE;
  137. TTransaction::close(); // close the transaction
  138. }
  139. }
  140. catch (Exception $e) // in case of exception
  141. {
  142. new TMessage('error', $e->getMessage()); // shows the exception error message
  143. TTransaction::rollback(); // undo all pending operations
  144. }
  145. }
  146. /**
  147. * Carrega a grid com dados do BD
  148. */
  149. public function onReload( $param )
  150. {
  151. try {
  152. TTransaction::open('app');
  153. $key = $param['key'];
  154. $doc = Documento::where('id','=',$key)->load();
  155. foreach($docs as $doc) {
  156. $obj = new stdClass;
  157. $obj->id = $doc->id;
  158. $obj->descricao = $doc->descricao;
  159. $obj->caminho = $doc->caminho;
  160. $this->datagrid->addItem($obj);
  161. }
  162. TTransaction::close();
  163. } catch (Exception $e) {
  164. new TMessage('error',$e->getMessage());
  165. }
  166. }
  167. public function onEdit($param)
  168. {
  169. try {
  170. TTransaction::open('app');
  171. $key = $param['key'];
  172. $doc = Documento($key);
  173. $obj = new stdClass;
  174. $obj->id = $doc->id;
  175. $obj->descricao = $doc->descricao;
  176. $obj->caminho = $doc->caminho;
  177. $this->form->setData($obj);
  178. $this->onReload($param);
  179. TTransaction::close();
  180. } catch (Exception $e) {
  181. new TMessage('error',$e->getMessage());
  182. }
  183. }
  184. }
  185. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (1)


MG

Erro da data, você precisar saber como esta informação está no arquivo e converter para o formato do banco. No caso do time-out, é normal pois existe um tempo limite padrão.
Para resolver o problema do timeout use o seguinte:
ini_set('max_execution_time', 0);

Isso fará que o timeout seja desconsiderado.
Este comento deve colocado antes do inicio do processo de leitura do arquivo.