Devo fornire free demo
di alcuni servizi agli utenti finali nella mia applicazione. La demo gratuita potrebbe essere di 30 mins, 1 hours, 5 hours
ecc. ( predefined time
) per un nuovo utente per una sola volta.
L'utente può anche consumare quel tempo in parti. come in 30 minuti di demo gratuita, possono usare come 10 minuti oggi, 15 minuti domani e il resto del tempo il giorno successivo ecc. Ora se un utente sceglie la demo gratuita di 30 minuti ed effettua il login & usando il servizio. Posso limitare l'utente per 30 minuti tramite la sua ora di inizio & fine del tempo. Posso inviarli alla pagina di pagamento se somma di start & il tempo di fine è uguale a 30 min.
Ora il problema si presenta con alcune condizioni incerte come se l'utente chiudesse il browser o la sua rete smettesse di funzionare o qualcos'altro alla fine durante la loro sessione attiva. In questo, non riesco a calcolare il loro tempo consumato a causa della mancanza di tempo di fine.
Lo scenario potrebbe essere come sotto (per 30 min demo).
UserID StartTime EndTime Consumed(mins)
10 09-04-2015 10:00 09-04-2015 10:10 10
10 10-04-2015 05:00 10-04-2015 05:04 4
10 11-04-2015 07:46 11-04-2015 07:56 10
10 11-04-2015 10:00 // Browser closed or any uncertain condition
10 11-04-2015 11:00 // How to restrict user to use actual 30 mins because I do not have EndTime in above row to calculate Consumed mins.
Potrei avere più di 100000 utenti allo stesso tempo per utilizzare i nostri servizi, quindi sto trovando una soluzione efficiente per questo.
Secondo la mia comprensione, posso creare un lavoro separato per controllare LastActiviteTime dell'utente e in base al quale posso aggiornare i loro consumi (min) nel database. Quel lavoro verrebbe eseguito ogni minuto e, d'altra parte, il browser di ogni sessione utente aggiornerebbe il LastActiveTime
nel database.
Questo può risolvere il mio problema, ma non sono molto sicuro delle prestazioni della mia applicazione a causa dell'enorme numero di richieste di database al minuto.
Si prega di consulenza.