Domanda

Ho un sito web in cui l'utente può caricare un foglio di calcolo Excel per caricare i dati in una tabella. Non ci può essere qualche fila 100k del foglio di calcolo excel. Quando si carica il file le esigenze sito per inserire una pari quantità di righe in una tabella del database.

Quale strategia devo prendere per fare questo? Stavo pensando di visualizzazione di una "Please wait pagina" fino al completamento dell'operazione, ma voglio che sia in grado di continuare a consultare il sito web. Inoltre, poiché il database in quel momento sarà sorta di occupato -? Non sarebbe che impedire alla gente di lavorare sul sito web

Il mio livello di accesso ai dati è in NHibernate.

Grazie, Y

È stato utile?

Soluzione

Visualizzazione di una pagina Vi preghiamo di attendere sarebbe piuttosto ostile come utente potrebbe essere wating un bel po 'e avrebbe bloccato le discussioni sul vostro server web.

Vorrei caricare il file, memorizzare e creare una voce in una coda (avrete bisogno anouther tabella per questo) per indicare che c'è un attesa di file da elaborare. È quindi possibile avere un altro processo (che potrebbe anche funzionare su un proprio server) che raccoglie le attività da questa tabella di coda ed elabora il file xls nel suo proprio tempo.

Altri suggerimenti

I creerebbe una coda di upload che inviare la richiesta a. Quindi l'utente potrebbe semplicemente check-in su nella coda di tanto in tanto. È possibile memorizzare lo stato di avanzamento dell'operazione batch nella coda come le file vengono elaborati.

Inoltre, i server di database sono robusti, potenti sistemi, multi-tasking. A meno che non avete osservato un problema con il sito web, mentre gli inserti stanno accadendo non date per scontato che sarà impedire alla gente di lavorare sul sito.

Tuttavia, per quanto inserto o concomitante prestazioni di lettura / scrittura va esistono meccanismi per affrontare questo. È possibile utilizzare la sintassi "INSERT bassa priorità" in MySQL o di avere l'applicazione della valvola a farfalla gli inserti dormendo un millesimo di secondo tra ogni inserimento. Inoltre, come si mestiere le vostre istruzioni INSERT, tempo che si utilizzano i parametri legati o no, e castrato si utilizza inserti multivalore può influire sulle prestazioni di inserimento e come influenza i clienti in larga misura.

su Invia si poteva passare l'Operazione DB ad un RequestHandler asincrona e impostare un valore di sessione quando il suo fare.

Mentre il processo asincrono è in corso è possibile controllare il valore di sessione per ogni richiesta e se è impostato (funzionamento = completato) visualizzare un messaggio, ad esempio, in una modale o qualsiasi messaggio meccanismo che avete.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top