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.

Comments

25 respuestas a “Ejecutar una PHP cada x tiempo (CRON JOB)”

  1. Joel Avatar
    Joel

    Gracias!!!

  2. janker Avatar

    es para jugarlo

  3. Al Avatar
    Al

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

  4. Alexandro Avatar
    Alexandro

    Gracias.

  5. Esteban Herrera Avatar

    Justo lo que estaba buscando!!! Muchas Gracias…

  6. Roberto Torres Avatar
    Roberto Torres

    Gracias!

  7. Esteban Avatar

    Muchas Gracias!!!

  8. marcos Avatar
    marcos

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

  9. Ernesto Wong Avatar
    Ernesto Wong

    Excelente!!! Sin funciona!

  10. aprendiendo Avatar
    aprendiendo

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

  11. Black_Incal Avatar
    Black_Incal

    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.

  12. Nicolas Avatar

    Que buena!!! Muchas Gracias 🙂

  13. anonimo Avatar
    anonimo

    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

  14. Alvaro Avatar
    Alvaro

    ¡Eres grande hermano! Saludos y Gracias

  15. juan Avatar
    juan

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

    1. Jhonnyf Avatar
      Jhonnyf

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

  16. Jonny Avatar
    Jonny

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

  17. carlos munoz Avatar
    carlos munoz

    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.

  18. Javier Avatar
    Javier

    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?

  19. david Avatar
    david

    munchaaaaaaaaaaaaaaasssssss gracias

  20. Einer Avatar
    Einer

    Muchas gracias fue el unico que me funcion 😀 😀

  21. Xavier Avatar

    Va perfecto, muchísimas gracias.

  22. Marcos Avatar
    Marcos

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

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *