I siti web possono eseguire attività pianificate con Cron

orologio

Abbiamo una serie di sistemi di monitoraggio ridondanti al lavoro che eseguono regolarmente i processi. Alcuni corrono ogni minuto, altri una volta a notte a seconda di quello che stanno facendo. Ad esempio, potremmo eseguire uno script che esporta tutti i clienti che non hanno effettuato un acquisto in 30 giorni per inviare loro un coupon.

Piuttosto che cercare di tenere traccia di tutti questi a mano, è molto più facile creare lavori che vengono automaticamente pianificati ed eseguiti. Sui sistemi basati su Unix, ciò si ottiene con Cron. Per voi gente che sapete cosa state facendo, sentitevi liberi di istruire me e i lettori se butto via qualsiasi disinformazione.

È un peccato, ma il tipico sviluppatore web non conosce affatto Cron. Anche se lo sono, le società di web hosting spesso non forniscono accesso o supporto a Cron. Il mio host è uno di questi ultimi: ti permettono di usarlo, ma non lo supportano.

Cos'è Cron?

cron prende il nome dalla parola greca Chronos, che significa a che ora. Cron viene eseguito in un ciclo continuo per eseguire attività che vengono accumulate da Crontab (forse chiamato per linguettaulatore. Tali attività sono in genere denominate Cronjobs e possono fare riferimento a script nel tuo sito.

Spiegazione del diagramma Cron

Come imposto il Crontab

Far funzionare Cron effettivamente può essere difficile, quindi ecco cosa ho imparato e come l'ho fatto Se fai schifo:

  1. Ho impostato il mio script per controllare quello di Twitter API per vedere se qualcuno aveva risposto @ifsuck. Ho confrontato quei messaggi con i messaggi che avevo già salvato sul sito, inserendone di nuovi.
  2. Una volta che lo script funzionava, ho abilitato le autorizzazioni per l'utente per eseguire lo script (744) e ho aggiunto il riferimento allo script al mio file Cronjob - ne parleremo più avanti.
  3. Ho quindi dovuto accedere al mio sito Web tramite SSH. Su un Mac, ciò richiedeva l'apertura di Terminal e la digitazione Nome utente SSH@domain.com dove username era il nome utente che desideravo utilizzare e dominio era il sito web. Quindi mi è stato chiesto di inserire la password.
  4. Ho quindi tentato di eseguire lo script direttamente dal prompt dei comandi digitando il nome del file e il relativo percorso sul server: /var/www/html/myscript.php
  5. Una volta che ho funzionato correttamente, ho aggiunto il codice Unix necessario nella prima riga del file: #! / usr / bin / php -q . Credo che questo dica semplicemente a Unix di utilizzare PHP per eseguire lo script.
  6. Alla riga di comando del Terminale, ho digitato crontab (altri potrebbero dover digitare crontab -e) e premi invio ... e questo era tutto ciò che era necessario!

Sintassi per il tuo file Cronjob

Per quanto riguarda il n. 2 sopra, Cron utilizza uno schema ingegnoso per determinare quando verranno eseguiti i tuoi script. In effetti, puoi effettivamente copiarlo e incollarlo nel tuo Cronfile (sul mio host, si trova in / var / spool / cron / con il nome del file uguale al mio nome utente).

# + —————- minuto (0-59)
# | + ————- ora (0 - 23)
# | | + ———- giorno del mese (1 - 31)
# | | | + ——- mese (1 - 12)
# | | | | + —- giorno della settimana (0 - 6) (domenica = 0 o 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Quanto sopra eseguirà il mio script ogni minuto. Se volessi che venga eseguito solo una volta all'ora, metterei solo quanti minuti dopo l'ora desidero che venga eseguito, quindi se fosse al segno di 30 minuti:

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

Assicurati di impostare anche le autorizzazioni per questo file come eseguibile! Ho scoperto che la sintassi, i permessi e l'esecuzione di crontab dalla finestra del Terminale erano i fattori più importanti. Ogni volta che salvavo di nuovo il file, trovavo che anche le mie autorizzazioni necessitavano di essere ripristinate!

AGGIORNAMENTO: se desideri assicurarti che i lavori siano in esecuzione, un modo è semplicemente aggiornare un campo del database con l'ultima volta che lo script è stato eseguito. Se è più raro, puoi semplicemente scrivere un'e-mail inviata a te stesso.

Risorse Cron aggiuntive:

Quanti lavori potresti automatizzare utilizzando Cron?

Commenti

  1. 1

    Articolo ben trattato sulla configurazione di un cron, per qualcuno che non conosce crojobs, la parte più difficile nella configurazione di un cron è capire l'intervallo di esecuzione di cronjob, ed è abbastanza comune ottenere un intervallo sbagliato al primo tentativo. Se i tuoi cronjob sono sensibili al tempo, è bene includere alcuni codici nello script per richiamare lo stato in modo da essere informato sullo stato di esecuzione del lavoro.

  2. 2

    Ciao Doug,

    Un paio di cose da considerare quando si lavora con cron job.

    Per prima cosa, dopo poche dozzine, ti auguro di avere un'interfaccia utente, un database e una sintassi dall'aspetto inglese 😉

    Secondo, cron avvierà il lavoro all'ora specificata, indipendentemente dal fatto che la precedente chiamata del lavoro sia stata completata. Quindi eseguire un lavoro una volta al minuto che richiede 2 minuti porterà rapidamente all'esecuzione di molti lavori dello stesso.

    Successivamente, non c'è quasi nessun rapporto di errore quando qualcosa va storto, quindi dovrai aggiungere il tuo rapporto di errore.

    Li ho affrontati in un paio di modi:
    - fare in modo che l'applicazione venga attivata tramite cron in un database per determinare cosa deve essere eseguito. Eseguilo una volta al minuto o un'ora a seconda di ciò che desideri
    - fai in modo che ogni script crei un file 'lock' in / tmp e, se esiste, non ricominciare, questo impedisce lavori duplicati se non li vuoi
    - se lo script trova il file di blocco più vecchio di 1 ora (o qualsiasi cosa suggerisca che sei morto) invia un avviso e-mail
    - fare in modo che lo script invii un'e-mail in caso di fallimento del lavoro in modo da sapere che qualcosa è andato storto
    - guarda framework come Flux o scheduler commerciali quando le tue esigenze vanno al di là di pochi script

    chris

  3. 4

    Aggiungerò anche che sulla maggior parte dei sistemi Linux / Unix, "crontab -e" è ciò che usi per modificare il tuo crontab. Penso che il tuo host (Jumpline) utilizzi una versione modificata per motivi di sicurezza.

  4. 5

    Ricordo ancora il primo giorno in cui ho incontrato Cronnie. Avevo sentito parlare di lei, che era affidabile, sempre puntuale, ma a volte un po 'confusa sulle sue intenzioni.

    Ho scoperto che questo era vero perché all'inizio era un completo mistero per me. Dopo aver chiesto in giro di lei, ho capito abbastanza rapidamente come le piaceva operare. Ora, non riesco a immaginare un giorno senza di lei nella mia vita. Rende il banale eccitante e solleva molti fardelli dalle mie spalle.

    In tutta serietà, mi sento come se avessi solo scalfito la superficie con ciò che posso automatizzare con cron job. Sono davvero i migliori amici degli sviluppatori. Se stai usando qualcuno come CPanel per gestire il tuo server, fornisce un'interfaccia molto più amichevole per creare cron. Completo di menu a tendina per minuto, ora, giorno, mese, ecc. Che costruiscono la linea cron per te.

  5. 7

    Vedo sicuramente che questo è qualcosa che ogni marketer dovrebbe usare ... C'è qualcuno che può fornire questo servizio perché suona un po 'troppo "tecnico"?

Cosa ne pensi?

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati dei tuoi commenti.