Los sitios web pueden ejecutar tareas programadas con Cron

reloj

Tenemos varios sistemas de monitoreo redundantes en funcionamiento que ejecutan procesos de manera regular. Algunos corren cada minuto, otros una vez por noche, dependiendo de lo que estén haciendo. Por ejemplo, podríamos ejecutar un script que exporta a todos los clientes que no han realizado una compra en 30 días para enviarles un cupón.

En lugar de intentar realizar un seguimiento de todos estos a mano, es mucho más fácil crear trabajos que se programan y ejecutan automáticamente. En los sistemas basados ​​en Unix, esto se logra con Cron. Para ustedes, gente que sabe lo que está haciendo, no dude en informarme a mí y a los lectores si arrojo alguna desinformación.

Es lamentable, pero el desarrollador web típico no está familiarizado con Cron en absoluto. Incluso si lo son, las empresas de alojamiento web a menudo no brindan acceso ni soporte a Cron. Mi anfitrión es uno de los últimos: te permiten usarlo, pero no lo admiten.

¿Qué es Cron?

cron recibe su nombre de la palabra griega Chronos, que significa hora. Cron se ejecuta en un bucle continuo para ejecutar tareas acumuladas por Crontab (tal vez llamado así lengüetaulator. Estas tareas se denominan normalmente Cronjobs y pueden hacer referencia a scripts en su sitio.

Explicación del diagrama de cron

¿Cómo configuro Crontab?

Hacer que Cron se ejecute realmente puede ser un desafío, así que esto es lo que aprendí y cómo lo hice Si chupa:

  1. Configuré mi guión para verificar el de Twitter API para ver si alguien había respondido a @ifsuck. Comparé esos mensajes con los mensajes que ya guardé en el sitio web, ingresando los nuevos.
  2. Una vez que la secuencia de comandos estuvo funcionando, habilité los permisos para que el usuario ejecutara la secuencia de comandos (744) y agregué la referencia de la secuencia de comandos a mi archivo Cronjob; más sobre eso más adelante.
  3. Luego tuve que iniciar sesión en mi sitio web a través de SSH. En una Mac, eso requirió abrir Terminal y escribir SSH username@domain.com donde nombre de usuario era el nombre de usuario que deseaba usar y el dominio era el sitio web. Luego me pidieron y me dieron la contraseña.
  4. Luego intenté ejecutar el script directamente desde el símbolo del sistema escribiendo el nombre del archivo y la ruta relativa en el servidor: /var/www/html/myscript.php
  5. Una vez que lo hice funcionar correctamente, agregué el código Unix necesario en la primera línea del archivo: #! / usr / bin / php -q . Creo que esto simplemente le dice a Unix que utilice PHP para ejecutar el script.
  6. En la línea de comando de la Terminal, escribí crontab (otros pueden necesitar escribir crontab -e) y presione enter ... ¡y eso fue todo lo que se necesitaba!

Sintaxis de su archivo Cronjob

Con respecto al n. ° 2 anterior, Cron utiliza un ingenioso esquema para determinar cuándo se ejecutarán sus scripts. De hecho, puede copiar y pegar esto en su Cronfile (en mi host, se encuentra en / var / spool / cron / con el mismo nombre de archivo que mi nombre de usuario).

# + —————- minuto (0 - 59)
# | + ————- hora (0 - 23)
# | | + ———- día del mes (1 - 31)
# | | | + ——- mes (1 - 12)
# | | | | + —- día de la semana (0 - 6) (domingo = 0 o 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Lo anterior ejecutará mi script cada minuto. Si solo quisiera que se ejecute una vez por hora, solo pondría cuántos minutos después de la hora deseo que se ejecute, así que si fue en la marca de 30 minutos:

30 * * * * /var/www/html/myscript.php

¡Asegúrese también de configurar los permisos para este archivo como ejecutable! Descubrí que la sintaxis, los permisos y la ejecución de crontab desde la ventana de Terminal eran los factores más importantes. ¡Cada vez que volvía a guardar el archivo, encontraba que mis permisos también necesitaban restablecerse!

ACTUALIZACIÓN: si desea asegurarse de que los trabajos se estén ejecutando, una forma sencilla es actualizar un campo de la base de datos con la última vez que se ejecutó el script. Si es menos frecuente, puede escribir un mensaje de correo electrónico que se le envíe a usted mismo.

Recursos adicionales de Cron:

¿Cuántos trabajos podría automatizar utilizando Cron?

8 Comentarios

  1. 1

    Artículo bien cubierto sobre la configuración de un cron, para alguien nuevo en crojobs, la parte más difícil en la configuración de un cron es averiguar el intervalo de ejecución de cronjob, y es bastante común obtener un intervalo incorrecto en el primer intento. Si sus cronjobs son sensibles al tiempo, es bueno incluir algunos códigos en la secuencia de comandos para hacer eco del estado para que se le mantenga informado del estado de ejecución del trabajo.

  2. 2

    Hola Doug,

    Un par de cosas a tener en cuenta al trabajar con trabajos cron.

    Primero, después de unas pocas docenas, deseará tener una interfaz de usuario, una base de datos y una sintaxis similar al inglés 😉

    En segundo lugar, cron disparará el trabajo a la hora especificada, independientemente de si se completó la invocación anterior del trabajo. Por lo tanto, ejecutar un trabajo una vez por minuto que toma 2 minutos rápidamente conducirá a que se ejecuten muchos del mismo trabajo.

    A continuación, casi no hay informes de errores cuando algo sale mal, por lo que deberá agregar su propio informe de errores.

    Los he abordado de dos maneras:
    - hacer que la aplicación se active mediante una búsqueda cron en una base de datos para determinar qué se debe ejecutar. Ejecútelo una vez por minuto u hora dependiendo de lo que desee
    - haga que cada secuencia de comandos cree un archivo de 'bloqueo' en / tmp y, si existe, no comience de nuevo, esto evita trabajos duplicados si no los desea
    - si el script encuentra que el archivo de bloqueo tiene más de 1 hora (o lo que sugiera que murió) envíe una alerta por correo electrónico
    - haga que el script envíe un correo electrónico si falla el trabajo para que sepa que algo salió mal
    - busque marcos como Flux o programadores comerciales cuando sus necesidades vayan más allá de unos pocos scripts

    Chris

  3. 4

    También agregaré que en la mayoría de los sistemas Linux / Unix, "crontab -e" es lo que usa para editar su crontab. Creo que su anfitrión (Jumpline) está usando una versión modificada por razones de seguridad.

  4. 5

    Todavía recuerdo el primer día que conocí a Cronnie. Había escuchado cosas sobre ella, que era confiable, siempre a tiempo, pero a veces un poco confusa acerca de sus intenciones.

    Descubrí que esto era cierto, ya que al principio ella era un completo misterio para mí. Después de preguntar por ella, me di cuenta bastante rápido de cómo le gustaba operar. Ahora, no puedo imaginarme un día sin ella en mi vida. Hace que lo mundano sea emocionante y me quita muchas cargas de encima.

    Con toda seriedad, siento que solo he arañado la superficie con lo que puedo automatizar con trabajos cron. Realmente son los mejores amigos de los desarrolladores. Si está utilizando a alguien como CPanel para administrar su servidor, proporciona una interfaz mucho más amigable para crear crons. Completo con menús desplegables por minuto, hora, día, mes, etc. que crea la línea cron para usted.

  5. 7

    Definitivamente veo que esto es algo que todos los especialistas en marketing deberían usar ... ¿Hay alguien que pueda brindar este servicio porque suena un poco demasiado técnico?

¿Qué piensas?

Este sitio usa Akismet para reducir el correo no deseado. Descubra cómo se procesan los datos de sus comentarios.