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.

 

25 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

regenial. comence a buscar esto a las 8 de la noche, son las 11 de la noche y despues de buscar en muchisimas paginas y tratar por mi cuenta. Bammm. 🙂

Responder

Buen post, quisiera saber si es posible mediante cron, modificar un documento php o html cada cierto tiempo, ejemplo:
Poseo un sitio web, y en el index, cada día a primera hora cargo manualmente al rededor de 20 eventos, cada uno en una hora distinta, estos eventos son unas tareas o pequeños ejercicios para mis alumnos, cada uno de estos ejercicios, que los he llamado ‘eventos’, tienen una diferencia de 1 hora aproximadamente, el primero comienza a las 8 am, y así sucesivamente hasta la noche, obviamente cada tarea o ejercicio tiene una variable que contiene su hora de inicio y de fin,, mi pregunta sería !..podría automatizar mediante cron la inhabilitación de cada uno de los eventos o ejercicios en función de su hora ?
Ejemplo si un ejercicio tiene como hora de caducidad 9:00 am, que a esa hora mediante cron, pueda quedar inhabilitada?o fe la misma formar modificar la base de datos
Muchas gracias de antemano, me gustaría saber si este u otro método sería posible.

Responder

Si yo tengo una página donde quiero que mis usuarios registrados ganen un porcentaje de puntos diarios, como lo debo hacer?
Como creo el archivo.php? Que debe tener adentro?

Responder

munchaaaaaaaaaaaaaaasssssss gracias

Responder

Muchas gracias fue el unico que me funcion 😀 😀

Responder

Va perfecto, muchísimas gracias.

Responder

¡Genio total! Se agradece muchísimo la información. Me gustaría también saber hacerlo de forma local.

Responder

Deja un comentario

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