Ejecutar una PHP cada x tiempo (CRON JOB)

17 abril, 2013
Jhonnyf

Normalmente los sitemas web como wordpress, vBulletin usan Tareas programadas (Cron Jobs) pero emulada, no real, es decir, cada que alquien accesa a la web verifica el tiempo pasado y ejecuta la tarea, por ejemplo traer articulos metiante RSS, enviar articulos a Facebook, etc

El Problema con este tipo de Cron Jobs emulados es que ejecutan un php en el servidor cada x tiempo pero siempre y cuando haya visitas. es decir, si nadie las visitas a tu web son cada 1 o 2 horas no sé va a ejecutar la Tarea Programada, y si necesitas que se ejecute cada 10 minutos, tendrás problemas.

Todos los hosting (y si el tuyo no tiene es porque lo deshabilitaron) tiene la opcion de crear CRON JOBS, en esta ocasión usaré cPANEL, asi que estando en tu panel dentro del Menu AVANZADO entra a CRON JOBs

cron_jobs

ya dentro le indicas el tiempo de ejecución, si lo quieres diario, cada x minutos, etc. tanto en cPANEL como el PLESK o cualquier otro sistema crear un cron es lo mismo, en este caso le indicaré que lo haga cada 30 minutos

cron_jobs_tiempos

 

En la casilla comando vamos a poner la URL del php que queremos que se ejecute cada 30 minutos, pero recuerden que eso es como estar en la consola LINUX y se debe hacer con comandos SSH

el comando wget como ya lo habías visto antes (Instalar WordPress/Joomla/etc usando comandos SSH) lo que hace es traer un archivo de un sitio web a nuestra consola linux, es el equivalente a entrar a esa dirección con nuestro navegador favorito, el parametro -q lo que hace, es no mostrar ningún mensaje producto del uso del wget ; el parametro -N evita que el archivo sea transferido, asi que con eso, solo se le da el equivalente a “un toque“.

Con ese comando es el equivalente que nosotros mismos cada 30 minutos entres a esa URL y por tanto lo ejecutamos el script.

 

18 Comentarios. Dejar nuevo

es para jugarlo

Responder

WoW !!!… Muchas gracias !!!… Me funcionó de maravillas…

Responder

Gracias.

Responder
Esteban Herrera
31 enero, 2014 11:11 AM

Justo lo que estaba buscando!!! Muchas Gracias…

Responder
Roberto Torres
29 marzo, 2014 2:57 AM

Gracias!

Responder

Muchas Gracias!!!

Responder

muchas gracias lo andaba buscando, saludos desde Ensenada, Baja California México.

Responder
Ernesto Wong
28 mayo, 2014 11:23 PM

Excelente!!! Sin funciona!

Responder

Gracias!

Responder

He probado el comando wget -N -q directamente en terminal SSH, funciona perfectamente.
Gracias.

Responder

Muchísimas gracias 🙂

Funciona perfectamente. De todos los sitios que he visitado buscando información sobre este tema es en el único que lo explica de forma clara, concisa y sin andarse por las ramas.

Responder

Que buena!!! Muchas Gracias 🙂

Responder

Un script php se puede ejecutar directamente en la terminal linux, siempre que esté instalado php-cli.
Un ejemplo:

Creamos una nueva tarea programada para el usuario de apache www-data con el comando:

crontab -u www-data -e

E incluimos la siguiente línea para que se ejecute cada 30 minutos el script /var/www/cron.php durante todos los días del año:

*/30 * * * * php -f /var/www/cron.php > /dev/null 2>&1

El modificador -f no es necesario, salvo que se use para pasar argumentos al script.
Más información en http://php.net/manual/es/features.commandline.usage.php

/dev/null 2>&1 es para que no genere salida en pantalla

Responder

¡Eres grande hermano! Saludos y Gracias

Responder

hola, tengo que ejecutar un php durante muchas horas o dias seguidos para sincronizar xml, ¿como puedo hacerlo?,

Responder

Si, colocandolo como CRON JOB te aseguras que siempre va a realziar esa tarea cada X tiempo.

Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *