Foros del Web » Programando para Internet » PHP » Zend »

CronJob al estilo PHPUnit

Estas en el tema de CronJob al estilo PHPUnit en el foro de Zend en Foros del Web. Igual es una tontería, pero más absurdo sería no preguntarlo. Llevo un tiempo usando con Zend y PHPUnit, me gusta el uso de PHPUnit, como ...
  #1 (permalink)  
Antiguo 19/04/2012, 01:59
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años, 6 meses
Puntos: 261
CronJob al estilo PHPUnit

Igual es una tontería, pero más absurdo sería no preguntarlo.

Llevo un tiempo usando con Zend y PHPUnit, me gusta el uso de PHPUnit, como interactúa con Zend y como se accede a todas sus funciones.

Mi pregunta, como se pude hacer un CronJob que se ejecute al estilo de PHPUnit pero sin las funcionalidades de test?

Me refiero al estilo PHPUnit por la forma en como lo hace, creas varios archivos con sus funciones para realizar los distintos test, y cuando ejecutas, levanta la aplicación Zend y realiza todos los test.

La idea es algo similar, que el cronjob ejecute un archivo concreto, y este levante la aplicación Zend y ejecute todas las tareas, que cada tarea sería un archivo distinto, sea un controller o un model de Doctrine para trabajar con la base de datos.

Igual me quiero complicar mucho y se puede hacer de una forma más sencilla dando la misma facilidad de acceso al Framework.

A ver que opinan.

Saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #2 (permalink)  
Antiguo 19/04/2012, 04:44
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: CronJob al estilo PHPUnit

Que tal Uncontroled_Duck,

No entiendo muy bien la pregunta, pero el criterio es el mismo que en phpunit, instanciar Zend_Application y hacer el bootstrap, algo así:

Código PHP:
Ver original
  1. ...
  2. $app = new Zend_Application(
  3.     APPLICATION_ENV,
  4.     APPLICATION_PATH . '/config/settings.ini');
  5. $app->bootstrap(array('db', 'modules'));
  6. $service = $app->getBootstrap()->getContainer()->get('Application\Service\Products');
  7. $service->processBatch();
  8. ...
  9. $db = $app->getBootstrap()->getResource('db');
  10. $db->query(/***/);

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 19/04/2012, 06:42
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años, 6 meses
Puntos: 261
Respuesta: CronJob al estilo PHPUnit

Hola masterpuppet,

Pues si que estaba intentando complicarme y bastante por lo que veo.

Voy a probarlo a ver que tal va y os cuento.

Gracias por la ayuda.

Un saludo,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #4 (permalink)  
Antiguo 20/04/2012, 13:46
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años, 6 meses
Puntos: 261
Respuesta: CronJob al estilo PHPUnit

Prácticamente es como tener el archivo index y un controller en el mismo archivo.

Al final me ha quedado así una prueba con doctrine:
Código PHP:
Ver original
  1. // Define path to application directory
  2. defined('APPLICATION_PATH')
  3.         || define('APPLICATION_PATH',
  4.         realpath(dirname(__FILE__) . '/../../../application'));
  5.  
  6. // Define application environment
  7. defined('APPLICATION_ENV')
  8.         || define('APPLICATION_ENV',
  9.         (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));
  10.  
  11. // Ensure library/ is on include_path
  12. set_include_path(implode(PATH_SEPARATOR, array(
  13.             realpath(APPLICATION_PATH . '/../library'),
  14.             get_include_path(),
  15.         )));
  16.  
  17. /** Zend_Application */
  18. require_once 'Zend/Application.php';
  19.  
  20. // Create application, bootstrap
  21. $application = new Zend_Application(
  22.                 APPLICATION_ENV,
  23.                 APPLICATION_PATH . '/configs/application.ini'
  24. );
  25. $application->bootstrap(); #Solo que no he aplicado el '->run()'
  26.  
  27. $doctrineContainer = Zend_Registry::get('doctrine');
  28.  
  29. $doctrine = Zend_Registry::get('doctrine');
  30. $entityManager = $doctrine->getEntityManager();
  31. $repository = $entityManager->getRepository('\Entities\Entity\Site');
  32.  
  33. $result = $repository->findAll();
  34. var_dump($result);
Aunque tengo que hacer más pruebas, por ahora anda con Doctrine que es lo que más me preocupaba.

Pero pregunto, al no añadir las líneas que indicas masterpuppet influye en algo?
Código PHP:
Ver original
  1. $service = $app->getBootstrap()->getContainer()->get('Application\Service\Products');
  2. $service->processBatch();
Al ponerlas me daba error, he buscado en la clase Bootstrap y en la doc de Zend y no he encontrado nada de que hace exactamente.

Aún así gracias por indicarme el camino, me ha sido de gran ayuda, como siempre

Un saludo,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #5 (permalink)  
Antiguo 20/04/2012, 14:37
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: CronJob al estilo PHPUnit

En el resultado final no influye, son dos formas de hacer lo mismo, personalmente no me agrada Registry por lo tanto me inclino a utilizar el container del Bootstrap, que si bien es un registro al menos lo es interno, es consuelo de tontos pero prefiero utilizar lo menos malo.

Y si estas trabajando con la integracion de G. Blanco, deberias tener un resource para doctrine, con lo que podria ser:

Código PHP:
Ver original
  1. ...
  2. $application->bootstrap(array('doctrine'));
  3. $container = $application->getBootstrap()->getResource('doctrine');
  4. $em        = $container->getEntityManager();
  5. ...

Nota: el bootstrap vació inicializa todos los recursos, es preferible "levantar" solamente lo que necesites.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 20/04/2012 a las 14:43
  #6 (permalink)  
Antiguo 20/04/2012, 15:18
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años, 6 meses
Puntos: 261
Respuesta: CronJob al estilo PHPUnit

Correcto, es la integracion de G. Blanco.

Siempre viene bien aprender estos detalles. Le doy un cambio entonces.

Gracias x3^15

Un saludo,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight

Etiquetas: cronjob, doctrine, estilo, framework, php, phpunit
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:26.