Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Erro CRON TAB boa tarde! estou tentando executar o CMD que roda um SELECT no banco POSTGRES Comando: php cmd.php "class=CronTeste&method=executaCron Ao tentar, sistema exibe erro: Could not find driver Já vi post do Pablo com as devidas orientações, porém só consigo sucesso se utilizar o banco Customer do Samples. Alguém pode me ajudar? Obrigado! Célio Morais. ...
CM
Erro CRON TAB  
boa tarde!
estou tentando executar o CMD que roda um SELECT no banco POSTGRES
Comando: php cmd.php "class=CronTeste&method=executaCron

Ao tentar, sistema exibe erro: Could not find driver

Já vi post do Pablo com as devidas orientações, porém só consigo sucesso se utilizar o banco Customer do Samples.

Alguém pode me ajudar?

Obrigado!

Célio Morais.



Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (12)


MG

Me parece que está faltando o driver do postgree.
O sample aponta para um sqlite local, não é?
CM

Marcelo, tudo bem?
consigo executar todos formulários para esse banco. Achei que, como CMD traz o INIT, sistema também traria as conecções.
Sendo assim, como poderia fazer uso dos drivers já contemplados no framework?
MG

Eu tenho um exemplo de um job que é executado pela crontab.
As conexões funcionam..... se você processa formulários, deveria ser transparente.

  1. <?php
  2. /**
  3. * AtividadeJob - classe de serviço que verifica se o alarme
  4. * deve ser disparado
  5. * Dispara um e-mail e uma notificação
  6. *
  7. */
  8. class AtividadeJob
  9. {
  10.     public function execute($param NULL)
  11.     {
  12.         try {
  13.             date_default_timezone_set('America/Recife'); // servidor em recibe
  14.             TTransaction::open('consultor');
  15.             $repository = new TRepository('Todolist');
  16.             $criteria = new TCriteria;
  17.         
  18.             $agora date('Y-m-d H:i');
  19.             
  20.             $arr1 explode(' '$agora);
  21.             //$data = explode('-', $arr1[0]); // pega a data
  22.             $hora explode(':'$arr1[1]); // pega a hora
  23.             
  24.             // filter
  25.             $criteria->add(new TFilter('date(alarme)','=',$arr1[0]));
  26.             $criteria->add(new TFilter('hour(alarme)','=',$hora[0]));
  27.             $criteria->add(new TFilter('minute(alarme)','=',$hora[1]));
  28.             $criteria->add(new TFilter('situacao','='1));
  29.             $criteria->add(new TFilter('aviso','=','N'));
  30.             
  31.             //_debug($criteria->dump());
  32.             
  33.             $alarmes $repository->load($criteria);
  34.             //_debug($repository->count($criteria));
  35.             
  36.             foreach($alarmes as $obj) {
  37.                 // notificar
  38.                 SystemNotification::register($obj->system_user_id,
  39.                                              'Lembtete : ' $obj->descricao,
  40.                                              $obj->observacao,
  41.                                              'class=AtividadeList&method=onReload',
  42.                                              'Meus Lembretes',
  43.                                              'fa:bell');
  44.                 self::atualizarAviso($obj->id);                                             
  45.             }
  46.             
  47.             TTransaction::close();
  48.         } catch (Exception $e) {
  49.             MailService::send('marcelo@mgsistemas.com.br',
  50.                                __CLASS__' - Erro - método execute',
  51.                                _err($e),
  52.                                'html');
  53.         }
  54.        
  55.     }
  56.     
  57.     private static function atualizarAviso($id)
  58.     {
  59.         try {
  60.             TTransaction::open('consultor');
  61.             $alarme Todolist::find($id);
  62.             $alarme->aviso 'S';
  63.             $alarme->store();
  64.             TTransaction::close();
  65.         } catch (Exception $e) {
  66.             _debug($e->getMessage());
  67.             $subject __CLASS__ ' - Método : atualizarAviso';
  68.             SystemNotification::register(1,
  69.                                          $subject,
  70.                                          _err($e),
  71.                                          'class=SystemNotificationList',
  72.                                          'Minhas Notificações',
  73.                                          'fa:bell');
  74.         }
  75.     }
  76. }
  77. ?>
CM

Marcelo, obrigado pelo retorno!
veja, vi um detalhe. Se executar a crontab com o programa hospedado em nuvem, não tenho problemas. Porém, estou tentando gerar dados do servidor local. Neste, tenho o problema relatado.
É como, no localhost, os drivers não fossem carregados. Tem alguma orientação?

Obrigado!
MG

Meu sistema operacional é Windows e excepcionalmente eu uso o Agendador de Tarefas dele.
Já esqueci de excluir depois de testar e ficou consumindo recursos desnecessários. Por isso uso em extrema necessidade e com cautela.

Para estes casos eu uso o PHPUnit (testes unitários) para validar meus serviços e resultados.
Se passar pelos testes, terei certeza que na nuvem vai funcionar.
Eu acho mais rápido.
Tente usar os testes.
Sucesso!


MG

Ah, mais uma dica.
Execute o comando no terminal para ver se está tudo bem.
Este seria outra forma de testar o JOB.
Se tiver mais de uma versão do PHP verifique qual o sistema operacional está apontando.
Em algumas situações existem mais de uma versão, e a versão default da linha de comando está apontando para um PHP sem os drives habilitados.
CM

Amigo, veja: fiz os testes pela linha de comando e o erro persiste. Porém, se executar pelo navegador, funciona perfeitamente.
O que poderia ser?

Obrigado!
MG

Retornei por e-mail, visto que precisava de enviar uma imagem.
CM

Marcelo, bom dia!
Após seguir sua sugestão vi que o problema não o postgres, mas o firebird.
Consigo realizar consultas normalmente pelo adianti template.
O PHO Modules mostra que o PDO Firebird está desabilitado, mas o WAMP mostra outra coisa.
Enviei a imagem por email.

Obrigado!
CM

Marcelo bom dia!
descobri o problema. Segue a informação para que, supostamente, alhuém precise:
A classe SystemModulesCheckView cria um array de nome $extensions. No array, está se referenciando a extensão "firebird", quando na verdade o correto é "pdi_firebird".

Obrigado pela atenção!
Foi de grande valia.

Abraços!
MG

Bom dia. Excelente. Obrigado por compartilhar.
Abraços e sucesso!
CM

só corrigindo: o termo correto é "pdo_firebird"
Desculpe pelo erro de grafia.