Mysql
 sql >> Database >  >> RDS >> Mysql

Come pianificare la funzione dinamica con cron job?

Le attività Cron richiedono di preimpostare gli orari in cui vengono eseguite, non possono (sì, potresti hackerarlo avendo uno script che modifica il tuo crontab, ma non direi che è un'ottima idea) avere il loro tempo per essere eseguito in modo dinamico. Ciò significa che hai essenzialmente due opzioni:

1) Imposta un cronjob da eseguire ogni minuto e usa un file temporaneo che tocchi per dire l'ultima volta che ha eseguito una delle attività pianificate Ogni volta che viene eseguito controlla se c'era un'attività da eseguire tra l'ultimo timestamp di il tuo file temporaneo e l'ora corrente e, se presente, esegue l'attività. Questa è una soluzione grossolana ma semplice.

2) Non usare cron. Crea un demone che controlla a che ora devono essere eseguite le attività e le inserisce in una coda di priorità, quindi inserisce il primo elemento e si ferma finché non è il momento di eseguire quell'attività. Esegue l'attività e la reinserisce per essere eseguita 24 ore in futuro e si ripete. Questa soluzione è di gran lunga più elegante, ma richiede anche più lavoro.