Sincronizzazione dei dati dal processo di memoria (C ++) al database

0

Ho un programma C ++ che legge i dati di gioco dal processo di memoria. Ad esempio,

int points = 0;
while (1) {
 points = ReadProcessMemory(..) // points will be read from game's memory
 Sleep(100) // Don't read too often      
}

Voglio sincronizzare i dati in modo che visualizzino questo punto (non necessariamente in tempo reale ma abbastanza veloce) sul mio sito web. Quindi ho l'opzione serveral

  1. Nel ciclo while, continuava a inviare la richiesta POST all'API del server per salvare nel database
  2. Nel ciclo while, controlla la modifica del punto, se rilevato, invia POST (riduci il traffico del server)
  3. Nel ciclo while, scrivi subito nel database quindi nessun traffico sul server, solo sul database (Cloud server gratuito)

Quindi sul server,

  1. Se si utilizza Firebase, allora la cosa sarà più semplice dato che i dati saranno automaticamente vincolati alle modifiche.
  2. Se non è Firebase, fai un altro ciclo while per continuare ad aggiornare?

Spero che qualcuno possa darmi qualche idea su come renderlo efficiente. Ovviamente funzionerà se continuerò a scrivere nel ciclo while sul programma C ++ e continuerò a leggere nel ciclo while sul server. Ma sento che c'è un design molto migliore. Grazie!

    
posta Zanko 27.06.2016 - 23:59
fonte

1 risposta

0

Comprendo i seguenti requisiti:

  • è il codice del gioco, quindi deve essere reattivo
  • le modifiche sono monitorate ogni 100ms.
  • questa velocità di elaborazione dell'opzione scelta dovrebbe far fronte a questa frequenza nonostante la latenza della rete e del database.

Sul lato client:

  • L'opzione 1 richiederebbe 10 volte al secondo: la preparazione del POST (conversione in stringhe e concatenazione) e l'invio della richiesta HTTP.

  • L'opzione 2 significherebbe 10 volte al secondo: confronto del punto con lo stato precedente (nella comparazione della memoria), e solo quando differisce facendo il POST dell'opzione 1. Nel peggiore dei casi (il punto è in continua evoluzione) , avresti quasi lo stesso carico rispetto all'opzione 1 (il confronto della memoria è trascurabile rispetto alle altre operazioni). Ma molto probabilmente, avresti un tempo di risposta più veloce.

  • L'opzione 3 sarebbe molto simile all'opzione 1 (eccetto che nell'otta 1, il webserver dovrebbe aggiungere un'altra volta l'esercizio di comunicazione, che potrebbe fare la differenza se aspetteresti il completamento)

Quindi suggerirei di optare per l'opzione 2, o eventualmente per un'opzione 4: pubblicare solo le modifiche, ma direttamente sul server web.

    
risposta data 28.06.2016 - 01:20
fonte

Leggi altre domande sui tag