Sono più familiare con cron rispetto a node-cron, ma ho dato una rapida occhiata alla documentazione.
Se ho capito bene, node-cron utilizza una sintassi simile a quella usata da cron, ma con un campo aggiuntivo "secondi". Allora, dove un job cron potrebbe avere:
# min hour mday month wday command
*/15 * * * * some-command
per pianificare some-command
per eseguire ogni 15 minuti, il nodo-cron avrebbe usato una sintassi simile a specificare l'ora di correre:
'0 */15 * * * *'
(con un ulteriore campo per specificare secondi), ma esegue una funzione JavaScript specificata, non un comando esterno.
Nel cron standard, non esiste alcuna sintassi per specificare l'esecuzione di un processo ogni 45 minuti. Una specifica di 0/45 * * * *
eseguiva un lavoro due volte ogni ora, a 0 e 45 minuti dopo l'ora. Per eseguire un lavoro ogni 45 minuti (alle 00:00, 00:45, 01:30, 02:15, ..., ovvero 32 volte al giorno), è necessario programmarlo per l'esecuzione ogni 15 minuti e quindi invoca uno script che controlla l'ora corrente per decidere se fare qualcosa.
Un approccio simile dovrebbe funzionare per node-cron. Pianificare la funzione da eseguire ogni 15 minuti e richiamare una funzione che controlla l'ora corrente per decidere se eseguire. Ad esempio, è possibile verificare se il numero di minuti da mezzanotte modulo 45 è zero. (Potrebbe essere utile consentire una piccola variazione nel caso in cui la pianificazione non sia esatta)
Non conosco JavaScript abbastanza bene da suggerire il modo migliore per scrivere questa funzione, ma dovrebbe essere ragionevolmente semplice.
fonte
2014-06-22 20:04:43
Non è "ogni 45 minuti", ma "ogni ora a 45". – Cody
testato, ma sembra funzionare anche ogni secondo, il che ha senso a causa del primo * Quando avviato a '17: 50: 18' gira a' 18: 00: 01' '18:00:02 'ecc. Ho intenzione di provare 00 al posto del primo * –
ottenuto che funzioni con una leggera regolazione del campo dei secondi, ecco lo schema; '0 */45 * * * *' –