Lançado Adianti Framework 8.1!
Clique aqui para saber mais
Estou criando um serviço, e resolvi ativar o log. No log ele mostra que está executando o SQL duas vezes, mesmo que eu tenha colocado para fazer apenas uma, segue meu código inclusive com as linhas que desabilitei para testar. Fiquei um pouco preocupado se realmente as consultas SQL são executadas mais de uma vez, imagino a lentidão em grandes massas de dados. ...
NC
 
Estou criando um serviço, e resolvi ativar o log.

No log ele mostra que está executando o SQL duas vezes, mesmo que eu tenha colocado para fazer apenas uma, segue meu código inclusive com as linhas que desabilitei para testar.

Fiquei um pouco preocupado se realmente as consultas SQL são executadas mais de uma vez, imagino a lentidão em grandes massas de dados.

  1. <?php
  2. /*
  3.  * Classe AddRepresADService
  4.  * Adiciona/Bloqueia Representantes na tabela de acesso e no AD
  5.  */
  6. class AddRepresADService
  7. {
  8.     public static function ConsultaRepresentantes()
  9.     {
  10.         try
  11.         {
  12.             // inicia transação com o banco
  13.             TTransaction::open('permission');
  14.              // define log
  15.             $date=new DateTime(); //this returns the current date time
  16.             $arquivo_log PATH_LOG.'/log-'.$date->format('Y-m-d-H-i').'.html';
  17.             TTransaction::setLogger(new TLoggerHTML($arquivo_log)); 
  18.             TTransaction::log("Class:<b>AddRepresAdService</b> Method:<b>ConsultaRepresentanes</b>"); 
  19.             
  20.             // define o critério 
  21.             $criteria = new TCriteria
  22.             $criteria->add(new TFilter('LOGIN''=''ANS13')); 
  23.             $criteria->add(new TFilter('TIPO_USUARIO''=''REPRESENTANTE'));
  24.             // carrega os usuários do SIM3G 
  25.             //$all = vwSIM3GUsuario::getObjects( $criteria ); 
  26.             $repos = new TRepository('vwSIM3GUsuario');
  27.             $sim3gusuario $repos->load($criteria);
  28.             //foreach ($all as $key => $usuario) 
  29.             //{ 
  30.                 //print $usuario->LOGIN; 
  31.             //} 
  32.             
  33.             // close the transaction
  34.             TTransaction::close();
  35.         }
  36.         catch (Exception $e// in case of exception
  37.         {
  38.             // shows the exception error message
  39.             //new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  40.             
  41.             print $e->getMessage();
  42.             
  43.             // undo all pending operations
  44.             TTransaction::rollback();
  45.         }
  46.         
  47.     }
  48. }
  49. ?>


Esse é o resultado do log:
<p> <b>Debug</b>: <b>2015-11-18 22:55:15</b> - <i>Class:<b>AddRepresAdService</b> Method:<b>ConsultaRepresentanes</b></i> </p> <p> <b>Debug</b>: <b>2015-11-18 22:55:15</b> - <i>SELECT * FROM VW_SIM3G_USUARIO WHERE (LOGIN = 'ANS13' AND TIPO_USUARIO = 'REPRESENTANTE')</i> </p> <p> <b>Debug</b>: <b>2015-11-18 22:55:15</b> - <i>SELECT * FROM VW_SIM3G_USUARIO WHERE (LOGIN = 'ANS13')</i> </p>

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 (3)


NC

Descobri uma coisa.

Ao fazer essa chamada:
  1. <?php $modify_usuario = new tbUsuario($login_alter); ?>


Está mostrando no log que está fazendo duas vezes o SQL
Debug: 2015-11-18 23:32:06 - SELECT * FROM TB_USUARIO WHERE (USU_USERNAME = 'ans13')
Debug: 2015-11-18 23:32:06 - SELECT * FROM TB_USUARIO WHERE (USU_USERNAME = 'ans13')

E agora eu sei porque aparece duas vezes é por causa do método __construct onde eu chamo o parente:__consturct($id)

  1. <?php  public function __construct($id NULL)
  2.     {
  3.         parent::__construct($id);
  4.         parent::addAttribute('USU_USERNAME');
  5.         parent::addAttribute('USU_NOME');
  6.         parent::addAttribute('USU_EMAIL');
  7.         parent::addAttribute('USU_SENHA');
  8.         parent::addAttribute('USU_ATIVO');
  9.     }
  10. ?>


Agora eu não sei se ele só mostra os dois SQLs ou se ele realmente executa, se isto for verifico, precisa ser reavaliado essa construção.

Abraços
PD

1) Verifica se não está passando 2x em ConsultaRepresentantes();
2) Use $repos->load($criteria, FALSE); para não carregar agregados (mais rápido);
NC

Pablo,

Não estou chamando duas vezes, postei o código inteiro pode reparar que não chamo duas vezes, o meu receio realmente é o sistema estar executando duas vezes a mesma consulta.