Ho una domanda riguardo all'implementazione di un programma che sto cercando di fare. Ho un database MySQL con numerosi utenti e ognuno ha un compito eseguito in un determinato momento.
Per ogni utente hanno un tempo per l'esecuzione dell'attività e un fuso orario per l'attività da eseguire (ciascuna colonna separata nel db MySQL). Finora, quando ho provato cose, eseguo il programma ogni 5 minuti VIA cron, scorre in tutti gli utenti e controlla se (timeToBeSent) - (currentTime) < 5 , se è l'attività viene eseguita. So che questo non è accurato al 100%, ma era il modo più semplice e più semplice per iniziare alcuni test.
Ora che ho finito l'idea generale del mio programma, quali sono alcune opzioni per farlo funzionare?
- Potrei continuare a scorrere tutti gli utenti ogni 5 minuti, ma quello sta per essere intensivo di risorse e non accurato al minuto.
- Un'altra idea in cui converto tutte le volte che l'attività viene eseguita in un fuso orario comune, quindi ordina il database in base all'ora. Una volta fatto questo, eseguilo ogni minuto e seleziona le righe si riferiscono direttamente al minuto corrente
- EDIT: Un'altra idea dai commenti sarebbe quella di ordinare il db in base a tutte le volte convertite in UTC. Inizia con il primo utente al più presto ed esegui l'attività. Quindi troverei la differenza di fuso orario tra quell'utente e il successivo e avrò il thread in sospeso fino a quando non verrà visualizzata l'ora successiva.
Sono piuttosto nuovo all'ingegneria del software, e non ho preso lezioni di scuola sull'implementazione del design nella mia scuola, quindi se c'è un modo per farlo mi piacerebbe se i link ad articoli / fonti potessero essere pubblicati così che io può imparare.
Grazie mille!
EDIT: Language is Java