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.
Esse é o resultado do 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.
- <?php
- /*
- * Classe AddRepresADService
- * Adiciona/Bloqueia Representantes na tabela de acesso e no AD
- */
- class AddRepresADService
- {
- public static function ConsultaRepresentantes()
- {
- try
- {
- // inicia transação com o banco
- TTransaction::open('permission');
- // define log
- $date=new DateTime(); //this returns the current date time
- $arquivo_log = PATH_LOG.'/log-'.$date->format('Y-m-d-H-i').'.html';
- TTransaction::setLogger(new TLoggerHTML($arquivo_log));
- TTransaction::log("Class:<b>AddRepresAdService</b> Method:<b>ConsultaRepresentanes</b>");
- // define o critério
- $criteria = new TCriteria;
- $criteria->add(new TFilter('LOGIN', '=', 'ANS13'));
- $criteria->add(new TFilter('TIPO_USUARIO', '=', 'REPRESENTANTE'));
- // carrega os usuários do SIM3G
- //$all = vwSIM3GUsuario::getObjects( $criteria );
- $repos = new TRepository('vwSIM3GUsuario');
- $sim3gusuario = $repos->load($criteria);
- //foreach ($all as $key => $usuario)
- //{
- //print $usuario->LOGIN;
- //}
- // close the transaction
- TTransaction::close();
- }
- catch (Exception $e) // in case of exception
- {
- // shows the exception error message
- //new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- print $e->getMessage();
- // undo all pending operations
- TTransaction::rollback();
- }
- }
- }
- ?>
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>
Descobri uma coisa.
Ao fazer essa chamada:
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)
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
1) Verifica se não está passando 2x em ConsultaRepresentantes();
2) Use $repos->load($criteria, FALSE); para não carregar agregados (mais rápido);
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.