Ci scusiamo per il titolo un po 'confuso. Non sono sicuro di come intitolare questo. La mia situazione è questa: ho uno strumento di simulazione accademica, che sto sviluppando per il web front-end. Mentre il simulatore basato su C++ è abbastanza efficiente dal punto di vista computazionale (da diversi centesimi a un decimo di secondo) per piccoli sistemi, può generare una quantità di dati significativa (in termini di applicazioni Web) (~ 4-6mb).Come gestire set di dati di grandi dimensioni per la simulazione lato server -> browser client
Attualmente il setup è i seguenti-
- utente accede a file index.html. Questa pagina sul lato sinistro ha una forma interattiva in cui l'utente può inserire i parametri di simulazione. Sul lato destro c'è una rappresentazione del sistema che stanno creando, insieme ad alcune schede in grigio per vari grafici dei dati di simulazione.
- L'utente fa clic su "Esegui simulazione". Questo inoltra i parametri sim richiesti a un file runSimulation.php tramite una chiamata AJAX. runSimulation.php crea un file di input in base ai dati inviati, quindi esegue il simulatore utilizzando questo file di input. Il simulatore invia 4-6 MB di dati in vari file di output.
- Una volta terminata la simulazione, la risposta al browser è un'altra funzione javascript che chiama un file returnData.php. Questo script php contiene i dati nei file di output come dati JSON, restituisce i dati JSON al browser, quindi elimina i file di dati.
- Questi dati di risposta vengono quindi inviati a pochi oggetti di tracciamento nel javascript del browser e le schede di stampa diventano attive. L'utente può quindi aprire e interagire con i dati tracciati.
Questa messa a punto sta funzionando bene, però io sono in esecuzione in due aspetti:
- Il ritorno dei dati è lenta 4-6MB di dati provenienti schiena può prendere un po 'a carico. (I dati vengono compressi con gzip, il che riduce considerevolmente il suo lato, ma può richiedere ancora 20+ secondi su una connessione più lenta)
- Il prossimo obiettivo è consentire all'utente di tracciare più esecuzioni di simulazione in modo che possano confrontare i risultati.
Il mio pensiero è che potrei voler conservare i file di dati sul server, mentre la sessione degli utenti è attiva. Ciò consentirebbe la capacità di caricare solo i dati per il tracciato che l'utente desidera visualizzare (e magari caricando altri dati in background mentre visualizzano i risultati del grafico corrente). Per le esecuzioni multiple, posso avere più set di dati seduti sul server, pronti per l'utente da scaricare se/quando sono necessari.
Tuttavia, ho un grosso problema con questa linea di pensiero: come faccio a riconoscere (in php) che l'utente ha lasciato il server ed eliminare i dati? Non voglio che gli utenti prendano il controllo dello spazio su disco sulla macchina. Qualche idea sulle migliori pratiche per questo tipo di app web?