February 8th, 2010 Category: Programacion Zend Framework
1 Comment »

Si ejecutamos un script desde el shell, y necesitamos ejecutar algún resources en particular, como el de la base de datos. Necesitamos instanciar Zend_Application, y ejecutar los resources que necesitemos.

En este ejemplo vamos a ejecutar un script que nos envié por mail los usuarios registrados en el dia.
cronSendReport.php

defined('APPLICATION_PATH')  || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
set_include_path(implode(PATH_SEPARATOR, array(
APPLICATION_PATH . '/../library',
get_include_path(),
)));

require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();

// Iniciamos Zend_Application
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);

// Ejecutamos el resource que trae los datos de conexion.
$bootstrap = $application->getBootstrap();
$bootstrap->bootstrap('db');

$dbAdapter = $bootstrap->getResource('db');

$query = 'SELECT count(*) total from users where date(creation_date) = date(now())'
$row = $dbAdapter->fetchRow( $query );

$mail = new Zend_Mail();
$mail->setBodyText( "Hoy se registraron {$row['total']}" );
$mail->setFrom( "mimail@pablo-morales.com" );
$mail->setSubject( "Reporte de nuevos usuarios" );
$mail->send();
La forma de ejecutarlo, es
$ php cronSendReport.php
En el ejemplo solo vemos como se ejecuta uno de los resources, pero podemos ejecutar todos los que necesitemos llamando al método bootstrap de Zend_Application.
Seguir leyendo