Come determinare in modo efficiente quando si verificano cambiamenti negli elenchi di eventi

0

Abbiamo un sistema che memorizza le informazioni sugli eventi. Esiste un elenco principale di eventi e un elenco secondario, che possono sovrapporsi. Gli elenchi secondari sono combinati con il primario sulla base di 3 regole principali.

  1. Predefinito - visualizzato solo quando nessun evento è attuale
  2. Eventi: vengono visualizzati solo quando gli eventi principali sono attuali
  3. Override - visualizzato al posto degli eventi

Un nuovo sistema di terze parti che dobbiamo integrare significa che dobbiamo ottenere ciascuno dei diversi stati durante i giorni di ciò che gli eventi / eventi secondari dovrebbero mostrare. Ad esempio, da 9 a 5 questi eventi sono aggiornati in base alle tempistiche / regole, ma dopo 5 questi eventi sono aggiornati in base ai tempi e alle regole.

Un semplice esempio

Eventi principali

  1. Alfa evento | 10:30 - 14:30
  2. Evento bravo | 14:00 - 16:00
  3. evento charlie | 18:30 - 20:00

Eventi secondari

  1. Evento zulu | 00:00 - 23:59 | di default
  2. Evento yankee | Dalle 09:00 alle 11:00 di default
  3. Raggi x degli eventi | 09:00 - 11:30 | eventi
  4. Whisky degli eventi | 19:00 - 19:15 | ignorare

Proprio su questo esempio molto piccolo ciò risulterebbe come i seguenti elenchi che avremmo bisogno di generare

00: 00-09: 00 Evento zulu

09: 00-10: 30 Evento zulu Evento yankee

10: 30-11: 30 Alfa evento Xray eventi

11: 30-14: 00 Evento alpha

14: 00-14: 30 Alfa evento Evento bravo

14: 30-16: 00 Evento bravo

16: 00-18: 30 Evento zulu

18: 30-19: 00 Evento charlie

19: 00-19: 15 Whisper evento

19: 15-20: 00 Evento charlie

20: 00-23: 59 Evento zulu

Questo è un piccolo esempio di produzione di solito ci sono da centinaia a migliaia di eventi per molti giorni. Al momento gli unici endpoint trattano questo problema dinamicamente al volo, questo sistema di terze parti richiede che forniamo i dati in questo modo.

È tutto scritto in php e abbiamo gli elenchi di eventi primari e secondari in un array ciascuno.

Qual è il modo più efficiente per creare questi elenchi?

Abbiamo considerato di fare un controllo minuto per minuto, ma questo sembra orribilmente inefficiente e spero che esista un modo migliore.

    
posta chip 23.02.2015 - 13:55
fonte

1 risposta

0

Quindi ecco quello che ho fatto alla fine, piuttosto che scorrere ogni minuto di ogni giorno e controllare cosa dovrebbe mostrare ho creato un elenco di tutti i tempi di inizio e fine (in un unico elenco), quindi ho rimosso i duplicati e li ho ordinati In ordine.

In questo modo posso solo andare in bicicletta attraverso quell'array e questo mi darà i tempi di inizio / fine in cui le cose cambiano.

    
risposta data 26.02.2015 - 09:58
fonte

Leggi altre domande sui tag