Configurar tareas programadas en Magento

Cron es una utilidad importante que le permite ejecutar scripts en ciertos intervalos regulares. También se ha convertido en un aspecto importante para las aplicaciones basadas en web. Hay muchas formas en que el cron es útil para los sitios web, desde el envío de correos electrónicos de boletines regulares hasta la sincronización de la base de datos con sistemas de terceros. También puede usar cron para limpiar el almacenamiento de servicios de fondo para mejorar el rendimiento general de una aplicación.

¡Magento admite cron en el núcleo mismo, como lo hace con varias otras utilidades! Le permite configurar tareas programadas en el módulo, para que puedan ejecutarse a intervalos regulares. Magento ejecuta todas las tareas cron utilizando los archivos "cron.sh" y "cron.php" ubicados en la raíz del sitio. Por lo tanto, deberá asegurarse de haber configurado el cron a nivel del sistema para ejecutar el archivo "cron.sh" a intervalos regulares, lo que eventualmente activa el sistema cron de Magento. Y finalmente, Magento reúne todos los trabajos cron ubicados en los módulos, y los ejecuta si es necesario en esa ejecución cron particular.

Aunque Magento ya ha proporcionado muchos trabajos cron en los módulos centrales, también puede crear una tarea cron personalizada en su módulo. Y crear un módulo personalizado es exactamente de lo que hablaremos en las próximas secciones..

Un vistazo a la configuración de archivos

Crearemos un módulo personalizado simple llamado "Customcron". Aquí está la lista de archivos necesarios para la configuración deseada:

  • app / etc / modules / Envato_All.xml: es un archivo que se usa para habilitar nuestro módulo personalizado.
  • app / code / local / Envato / Customcron / etc / config.xml: Es un archivo de configuración del módulo en el que declararemos el trabajo cron personalizado.
  • app / code / local / Envato / Customcron / Model / Customcron.php: Es un archivo modelo en el que definiremos la lógica del trabajo cron.

Módulo personalizado: configurar los archivos y carpetas

Primero, necesitamos crear un archivo habilitador de módulos. Cree un archivo "app / etc / modules / Envato_All.xml" y pegue el siguiente contenido en ese archivo. Hemos utilizado "Envato" como espacio de nombres de nuestro módulo y "Customcron" como nombre de nuestro módulo. Habilitará nuestro módulo "Customcron" por defecto..

    cierto local   

A continuación, necesitamos crear un archivo de configuración del módulo. Cree "app / code / local / Envato / Customcron / etc / config.xml" y pegue el siguiente contenido en ese archivo.

    1.0       5,10,15,20,25,30,35,40,45,50,55 * * * *   customcron / customcron :: customcrontask        Envato_Customcron_Model    

El archivo "config.xml" parece bastante simple: declara el número de versión y las clases de modelo según las convenciones de Magento. Sin embargo, la etiqueta importante para nosotros es , que se utiliza para declarar todos los trabajos. Es uno de los "observadores de eventos" que usa Magento para reunir todos los trabajos cron en los módulos.

Además, bajo el  etiqueta, hemos declarado nuestro trabajo crontab personalizado usando el  etiqueta. Es una especie de identificador único para el trabajo cron. Aunque en el archivo anterior solo hemos creado una sola tarea, puede configurar múltiples trabajos cron bajo el  etiqueta. Siguiente, debajo hemos definido y etiquetas.

los etiqueta define intervalos cron dentro de la Etiqueta en la que el trabajo se ejecutará regularmente. En nuestro caso, la tarea cron personalizada se ejecutará cada cinco minutos. Pero espera, ¿qué hará cada cinco minutos? Eso es exactamente lo que el etiqueta significa! Declara el "método modelo" que será invocado por Magento durante la ejecución del trabajo cron personalizado.

A continuación, crearemos un archivo modelo "Cronjob.php". Cree "app / code / local / Envato / Customcron / Model / Customcron.php" con el siguiente contenido.

setToEmail ('[email protected] ') -> setBody (' Body of the Custom Cron Task Goes Here ') -> setSubject (' Subject: Custom Cron Task (cada 5 minutos) '.date ("Ymd H: i: s ")) -> setFromEmail ('[email protected] ') -> setFromName (' Magento Store Admin ') -> setType (' html '); $ mail-> send (); 

Entonces, como declaramos anteriormente, hemos definido el método del modelo "customcrontask". En este método, simplemente estamos enviando un correo electrónico utilizando la utilidad de clase de correo electrónico de Magento. Pero lo más importante es que este método se llamará regularmente, en cada ejecución de trabajo cron, por supuesto, cada cinco minutos.

Y, finalmente, debe asegurarse de que ha creado una entrada de trabajo cron en su sistema. Para Linux, simplemente necesita agregar la siguiente línea a su archivo crontab.

5,10,15,20,25,30,35,40,45,50,55 * * * * / bin / sh /path/to/magento/site/cron.sh

Solo necesita reemplazar "/ path / to / magento / site" con la ruta real de la instalación de Magento. Y para Windows, puede hacer lo mismo mediante el uso de tareas programadas. Sin embargo, en Windows, debe usar el archivo "/path/to/magento/site/cron.php", ya que "cron.sh" no es compatible.

¡Así que es realmente sencillo conectar sus trabajos cron personalizados en el sistema cron de Magento! Eso es todo por hoy, y espero que hayas aprendido algo útil en Magento. Comparte tus pensamientos utilizando el siguiente feed!