Muchas veces vamos a necesitar procesos que se ejecuten sin importar si del otro lado de la pantalla hay algún usuario realizando alguna acción.
Por lo general éste tipo de tareas tienen que ver más con procesos administrativos que con la experiencia de compra en si misma.
Una de las funcionalidades de Magento es el cron, que no es más que una extensión del cron del sistema operativo. La pequeña diferencia sería que desde el sistema operativo ejecutamos un único archivo de la plataforma y ésta, según configuraciones, se encargará de correr los procesos que correspondan.
Un cron job para Magento es, básicamente, un método de un modelo que se encargará de realizar una acción.
Para lograr el nuestro, lo primero sería crear la clase y el método que más tarde invocaremos. Un ejemplo podría ser el siguiente.
class Dc_Modulo_Model_Cron
{
public function runMyCronJob() {
//Acciones a realizar
}
}
De más está decir que lo que haga el método quedará librado a la necesidad de cada uno. No hace al ejemplo definir algún proceso.
Para lograr que el cron job sea insertado dentro de la lista de ejecución tenemos que agregar algunas líneas a la configuración de nuestro módulo.
<config>
...
<crontab>
<jobs>
<mi_modulo_mi_cron_job>
<run>
<model>modulo/cron::runMyCronJob</model>
</run>
<schedule>
<cron_expr>45 23 * * *</cron_expr>
</schedule>
</mi_modulo_mi_cron_job>
</jobs>
</crontab>
</config>
Los datos que acabamos de agregar indican lo siguiente.
- <mi_modulo_mi_cron_job> es el nombre del cron job. El nombre debe ser único.
- Dentro de <run> le indicamos el model a ejecutar.
- El tag <schedule> es el que, utilizando el mismo tipo de expresión que se aplica para el cron del sistema operativo, va a indicar la hora de ejecución.
De ésta forma, tendremos nuestro proceso corriendo cada vez que se cumpla la condición de la hora.
Para más información sobre cómo configurar la ejecución de los cron jobs y para conocer cuáles procesos ya vienen con Magento, pueden darle una leída al siguiente artículo en la wiki sobre el cron.