Ejecutar un trabajo Cron en GAE con PHP

01 de Dic, 2015

Ejecutar un trabajo Cron en GAE con PHP
Rate this post

Para ejecutar un trabajo Cron en Gae, debemos añadir un par de lineas de código a nuestro app.yaml y generar un archivo cron.yaml desde donde colocaremos los datos de la ejecución:

Supongamos que tenemos un archivo prueba.php que ejecuta un script para enviar un correo electrónico desde php cada media hora. Y lo tendremos alojado dentro de la carpeta cronjobs/

  1. $asunto = 'Cron ejecutado';
  2. $correo = 'Cron ejecutado en hora '.date("F j, Y, g:i a");
  3. mail( 'tumail@dominio.com', $asunto, $correo);

Debemos entonces agregar primero nuestro script al app.yaml para que se pueda ejecutar, para ello después de handlers agregamos

handlers:
- url: /prueba
script: cronjobs/prueba.php

Luego generamos nuestro archivo que contendrá el trabajo cron llamado cron.yaml donde agregaremos el tiempo y la ruta a ejecutar y le daremos un nombre al mismo.

cron:
- description: Prueba de Cron
url: /prueba
schedule: every 30 minutes synchronized

Subimos todos estos archivos via SKD a nuestro sitio en GAE y cada 30 min recibiremos un correo electrónico informando la hora de la ejecución.

Nota: Si queremos eliminar nuestros trabajos de Cron establecidos, solo debemos subir a GAE un archivo cron.yaml con la palabra “cron:” al inicio.

Los  tiempos de ejecución para nuestro Cron, puede ser añadidos de la siguiente manera:

every 12 hours (cada 12 horas)
every 5 minutes from 10:00 to 14:00 (cada 5 minutos desde 10:00 a 14:00)
every day 00:00 (todos los dias a las 00:00)
every monday 09:00 (todos los lunes a las 09:00)
2nd,third mon,wed,thu of march 17:00 (segundo, tercero Lunes,Miercoles,Jueves de Marzo 17:00)
1st monday of sep,oct,nov 17:00 (1er Lunes de septiembre,octubre,noviembre 17:00)
1 of jan,april,july,oct 00:00 (1 de enero,abril,julio,octubre 00:00)

Si deseas añadirlo en cambio para un cierto tiempo usa la siguiente opción:

every N (hours|mins|minutes) ["from" (time) "to" (time)]

Nos quedaría por ejemplo:

every 2 hours from 10:00 to 14:00 (Cada 2 horas desde 10:00 a 14:00)

Para mas información dirígete a la siguiente URL https://cloud.google.com/appengine/docs/php/config/cron