Els llocs web poden executar tasques programades amb Cron

rellotge

Disposem de diversos sistemes de control redundants que executen regularment processos. Alguns corren cada minut, d’altres un cop per nit, segons el que facin. Per exemple, és possible que executem un script que exporti tots els clients que no hagin fet cap compra en 30 dies per enviar-los un cupó.

En lloc d’intentar fer un seguiment de tots aquests a mà, és molt més fàcil crear feines que es programen i executen automàticament. En sistemes basats en Unix, això s’aconsegueix amb Cron. Per a les persones que sabeu què feu, no dubteu a educar-me a mi i als lectors si llenço alguna desinformació.

És lamentable, però el típic desenvolupador web no coneix gens Cron. Encara que ho siguin, les empreses d'allotjament web sovint no proporcionen accés ni suport de Cron. El meu amfitrió és un d’aquests darrers: us permeten fer-lo servir, però no l’admeten.

Què és Cron?

Cron rep el nom de la paraula grega Chronos, que significa temps. Cron s'executa en un bucle continu per executar tasques que Crontab acumula (potser amb el nom de llengüetaulador. Aquestes tasques se solen anomenar Cronjobs i poden fer referència als scripts del vostre lloc.

Explicació del diagrama Cron

Com puc configurar el Crontab

Aconseguir que Cron funcioni realment pot ser un repte, així que aquí teniu el que he après i com ho he fet Si xucla:

  1. He configurat el meu script per comprovar el de Twitter Programes a veure si algú li havia respost @ifsuck. He comparat aquests missatges amb els missatges que ja he desat al lloc web, introduint-ne de nous.
  2. Un cop l’escriptura funcionava, vaig habilitar els permisos per a que l’usuari executés l’escriptura (744) i vaig afegir la referència de l’escriptura al meu fitxer Cronjob, més endavant.
  3. Després vaig haver d’iniciar sessió al meu lloc web mitjançant SSH. En un Mac, calia obrir Terminal i escriure Nom d’usuari SSH@domini.com on el nom d'usuari era el nom d'usuari que volia utilitzar i el domini era el lloc web. Després em van demanar i em van donar la contrasenya.
  4. Llavors, vaig intentar executar l'script directament des de l'indicador d'ordres escrivint el nom del fitxer i la ruta relativa al servidor: /var/www/html/myscript.php
  5. Un cop el vaig fer funcionar correctament, vaig afegir el codi Unix necessari a la primera línia del fitxer: #! / usr / bin / php -q . Crec que això simplement indica a Unix que utilitzi PHP per executar l'script.
  6. A la línia d’ordres de Terminal, he escrit crontab (és possible que altres hagin d'escriure crontab -e) i premeu Enter ... i això era tot el que calia!

Sintaxi del fitxer Cronjob

Pel que fa al número 2 anterior, Cron utilitza un enginyós esquema per determinar quan s’executaran els vostres scripts. De fet, podeu copiar-lo i enganxar-lo al fitxer Cronfile (al meu amfitrió, es troba a / var / spool / cron / amb el nom de fitxer igual que el meu nom d'usuari).

# + —————- minut (0-59)
# | + ————- hora (0 - 23)
# | | + ———- dia del mes (1 - 31)
# | | | + ——- mes (1-12)
# | | | | + —- dia de la setmana (0-6) (diumenge = 0 o 7)
# | | | | |
* * * * * /var/www/html/myscript.php

L'anterior executarà el meu script cada minut. Si només volgués que s’executés un cop per hora, només posaria quants minuts després de l’hora desitjava que s’executés, de manera que si arribés als 30 minuts:

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

Assegureu-vos que també heu definit els permisos d’aquest fitxer com a executable. Vaig trobar que la sintaxi, els permisos i l'execució del crontab des de la finestra del Terminal eren els factors més importants. Cada vegada que tornaria a desar el fitxer, també hauria de restablir els permisos.

ACTUALITZACIÓ: si voleu assegurar-vos que els treballs s'estiguin executant, una manera senzilla és actualitzar un camp de base de dades amb l'última vegada que es va executar l'script. Si és més poc freqüent, podeu escriure un correu electrònic que us envieu.

Recursos Cron addicionals:

Quantes feines podríeu automatitzar utilitzant Cron?

8 Comentaris

  1. 1

    Article ben tractat sobre la configuració d’un cron, per a algú nou a crojobs, la part més difícil a l’hora de configurar un cron és esbrinar l’interval d’execució del cronjob, i és bastant habitual obtenir un interval equivocat al primer intent. Si els vostres treballs cronològics són sensibles al temps, és bo incloure alguns codis a l'script per fer ressò de l'estat, de manera que us mantingueu informat de l'estat d'execució del treball.

  2. 2

    Hola Doug,

    Un parell de coses a tenir en compte quan es treballa amb feines de cron.

    En primer lloc, després d’unes quantes dotzenes, voldríeu tenir una interfície d’usuari, una base de dades i una sintaxi d’aspecte anglès 😉

    En segon lloc, cron activarà el treball a l'hora especificada, independentment de si s'ha completat la invocació anterior del treball. Per tant, executar un treball un cop per minut que triga 2 minuts conduirà ràpidament a executar el mateix treball.

    A continuació, hi ha gairebé cap informe d'errors quan alguna cosa no funciona, de manera que haureu d'afegir el vostre propi informe d'errors.

    Els he abordat de dues maneres:
    - Feu que l'aplicació s'activi mitjançant un aspecte cron en una base de dades per determinar què cal executar. Executeu-lo un cop per minut o hora segons el que vulgueu
    - feu que cada script creï un fitxer de "bloqueig" a / tmp i, si existeix, no torneu a començar, això evitarà tasques duplicades si no les voleu
    - si l'script troba el fitxer de bloqueig de més d'una hora (o el que suggereixi que heu mort) envieu una alerta per correu electrònic
    - Feu que l'script enviï un missatge de correu electrònic en cas de fallida de la feina perquè sàpiga que alguna cosa ha fallat
    - mireu marcs com Flux o planificadors comercials quan les vostres necessitats superin els pocs scripts

    Chris

  3. 4

    També afegiré que a la majoria de sistemes Linux / Unix, "crontab -e" és el que utilitzeu per editar el vostre crontab. Crec que el vostre amfitrió (Jumpline) utilitza una versió modificada per motius de seguretat.

  4. 5

    Encara recordo el primer dia que vaig conèixer Cronnie. Havia sentit a dir coses sobre ella, que era fiable, sempre a temps, però de vegades una mica confusa sobre les seves intencions.

    Vaig trobar que això era cert, ja que al principi era un misteri complet per a mi. Després de preguntar sobre ella, em vaig adonar força ràpidament de com li agradava operar. Ara, no m’imagino passar un dia sense ella a la meva vida. Ella fa que el mundà sigui emocionant i em lleva moltes càrregues de les meves espatlles.

    Amb tota serietat, sento que només he ratllat la superfície amb el que puc automatitzar amb els treballs cron. Realment són el millor amic dels desenvolupadors. Si feu servir algú com CPanel per gestionar el vostre servidor, proporciona una interfície molt més amigable per crear crons. Complet amb menús desplegables de minuts, hores, dies, mesos, etc. que us creen la línia cron.

  5. 7

    Definitivament veig que això és una cosa que tots els professionals del màrqueting haurien d’utilitzar ... Hi ha algú que pugui proporcionar aquest servei perquè sona una mica massa “tècnic”?

Què et sembla?

Aquest lloc utilitza Akismet per reduir el correu no desitjat. Esbrineu com es processa el vostre comentari.