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.



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 (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. $agora = date('Y-m-d H:i');
  18. $arr1 = explode(' ', $agora);
  19. //$data = explode('-', $arr1[0]); // pega a data
  20. $hora = explode(':', $arr1[1]); // pega a hora
  21. // filter
  22. $criteria->add(new TFilter('date(alarme)','=',$arr1[0]));
  23. $criteria->add(new TFilter('hour(alarme)','=',$hora[0]));
  24. $criteria->add(new TFilter('minute(alarme)','=',$hora[1]));
  25. $criteria->add(new TFilter('situacao','=', 1));
  26. $criteria->add(new TFilter('aviso','=','N'));
  27. //_debug($criteria->dump());
  28. $alarmes = $repository->load($criteria);
  29. //_debug($repository->count($criteria));
  30. foreach($alarmes as $obj) {
  31. // notificar
  32. SystemNotification::register($obj->system_user_id,
  33. 'Lembtete : ' . $obj->descricao,
  34. $obj->observacao,
  35. 'class=AtividadeList&method=onReload',
  36. 'Meus Lembretes',
  37. 'fa:bell');
  38. self::atualizarAviso($obj->id);
  39. }
  40. TTransaction::close();
  41. } catch (Exception $e) {
  42. MailService::send('marcelo@mgsistemas.com.br',
  43. __CLASS__. ' - Erro - método execute',
  44. _err($e),
  45. 'html');
  46. }
  47. }
  48. private static function atualizarAviso($id)
  49. {
  50. try {
  51. TTransaction::open('consultor');
  52. $alarme = Todolist::find($id);
  53. $alarme->aviso = 'S';
  54. $alarme->store();
  55. TTransaction::close();
  56. } catch (Exception $e) {
  57. _debug($e->getMessage());
  58. $subject = __CLASS__ . ' - Método : atualizarAviso';
  59. SystemNotification::register(1,
  60. $subject,
  61. _err($e),
  62. 'class=SystemNotificationList',
  63. 'Minhas Notificações',
  64. 'fa:bell');
  65. }
  66. }
  67. }
  68. ?>
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.