Ejecutar una PHP cada x tiempo (CRON JOB)

Normalmente los sistemas web como WordPress, vBulletin usan Tareas programadas (Cron Jobs) pero emulada, no real, es decir, cada que alguien acceda a la web verifica el tiempo pasado y ejecuta la tarea, por ejemplo traer artículos mediante RSS, enviar artículos 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 opción de crear CRON JOBS, en esta ocasión usaré cPANEL, así que estando en tu panel dentro del Menú 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

wget -N -q www.elcodigofuente.com/refrescar_rss.php

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, así 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 para “Ejecutar una PHP cada x tiempo (CRON JOB)”

  1. Gracias!!!

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

  3. Gracias.

  4. Justo lo que estaba buscando!!! Muchas Gracias…

  5. Gracias!

  6. Muchas Gracias!!!

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

  8. Excelente!!! Sin funciona!

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

  10. 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.

  11. Que buena!!! Muchas Gracias 🙂

  12. 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

  13. ¡Eres grande hermano! Saludos y Gracias

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

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

  15. 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. 🙂

  16. 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.

  17. 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?

  18. munchaaaaaaaaaaaaaaasssssss gracias

  19. Muchas gracias fue el unico que me funcion 😀 😀

  20. Va perfecto, muchísimas gracias.

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

Deja una respuesta

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