Un'esigenza molto comune per un'applicazione è eseguire uno script ogni X minuti/ora. Fondamentalmente non è niente di complicato, solo qualche codice PHP e una voce crontab.Cronjob - come fare nel modo giusto?
Anche se ho scritto un bel po 'di quei cronjobs negli ultimi anni non ho ancora visto nessuna migliori pratiche, almeno non più di tanto. Come per ogni "elaborazione in background", molte cose possono andare storte, specialmente nelle impostazioni di produzione.
Tra questi:
- è verificato un errore durante l'esecuzione del cron e lo script è morto elaborazione metà dei dati
- il cronjob è stato accidentalmente avviato due volte da un altro processo/da un errore dell'utente/qualunque cosa
- il cronjob ha avuto modo in più tempo del previsto e lo script si chiama ancora una volta, anche se la sua non è fatto di elaborazione dati
- ecc
Quali sono le migliori pratiche per scrivere script cronjob solidi e robusti? Scrivere un file di blocco affermando che solo un'istanza viene eseguita, una registrazione estesa e un monitoraggio in modo da impedire l'invio di decine di migliaia di e-mail duplicate? Quali sono le tue idee?
Interessante che tu abbia postato questo perché ho fatto ricerche e mi sono chiesto alcune delle stesse cose. Nel mio caso, sono davvero preoccupato di come implementare in modo efficace la gestione delle eccezioni in uno script di shell che sto scrivendo. http: // StackOverflow.it/questions/6961389/exception-handling-in-shell-scripting ha alcune buone informazioni su questo nel caso tu sia curioso. Sono principalmente uno sviluppatore Java e la gestione delle eccezioni è molto robusto ma sembra più difficile nella terra * nix. –
questo dipenderebbe da ogni singolo script che viene eseguito, non ci sono risposte generiche, alcuni hanno bisogno di errori molto robusti controllando alcuni non ne hanno bisogno ... –
Ho inserito questa domanda in un segnalibro in previsione di risposte innovative con giustificazione dettagliata dei loro vantaggi e svantaggi, e sono piuttosto deluso dalle risposte "Questo è quello che faccio". – nickb