Re: R: Elaborare query con molti record
Davide Rossi <[email protected]>
| Newsgroups | gmane.comp.cms.cold-fusion.devel.italian |
|---|---|
| Message-ID | <CAJj9EgtrowF_WyNos3A6WNmYekp4n33PMactNRph8ZsfnXLAaQ@mail.gmail.com> |
qui: <cfflush interval="10"> usa <cfflush> Ciao D Il giorno 09 maggio 2012 12:56, Puglia Marco <[email protected]>ha scritto: > ** > > > Niente da fare… ho provato a mettere dei puntini all’interno di un loop > di 300.000 record con un <cfflush> impostato sui 10 byte e mi visualizza > tutto solo ad elaborazione finita… non capisco… vi incollo il codice.**** > > ** ** > > <cfloop query="elenco">**** > > <cfset midean13=elenco.codiceean>**** > > <cfquery name="trova" datasource="liberamente">**** > > select * from libridb where > idean13='#midean13#'**** > > </cfquery>**** > > <cfif trova.recordcount eq 0>**** > > <cfoutput>#midean13#</cfoutput> non > trovato (da aggiungere)<br>**** > > </cfif>**** > > ...**** > > <cfflush interval="10">**** > > </cfloop>**** > > ** ** > > Dove sbaglio?**** > > ** ** > > ================================ > *Marco Puglia > **Project Manager > **Business-e S.r.l. <http://www.business-e.it/>* (an Itway Group Company) > > Via F.lli Lumière, 65 - 48010 Ravenna**** > > Tel. +39 0544.460413 - Fax +39 0544.272297**** > > Cell. 348 4759233**** > > > *Italy*, *France*, *Spain*, *Portugal, Greece, Turkey* > Ravenna, Milano, Trento, Bari, Massa, Roma > Paris, Barcelona, Madrid, Lisboa, Athina, Istanbul, Ankara > ================================**** > > ** ** > > *Da:* [email protected] [mailto:[email protected]] *Per > conto di *Ciro Bernini > *Inviato:* lunedì 7 maggio 2012 08:33 > *A:* [email protected] > *Oggetto:* Re: R: Elaborare query con molti record**** > > ** ** > > **** > > Se usi cfflush senza altri parametri, cf invia al browser quello che ha > elaborato fino ad incontrare il tag <cfflush>. > Se metti l'opzione interval=k CF invia al browser i dati ogni qualvolta > genera k bytes di output; se noon usi cfflush CF invia al browser tutto > SOLO quando ha finito l'elaborazione, per cui se è una pagina da 100 k > cfflush non serve a nulla, ma se ha migliaia di record da elaborare e vuoi > avere lo stato di avanzamento a mano a mano che elabora la pagina metti il > cfflush all'interno del loop. > Se vuoi che mandi verso il browser dei dati "ogni tanto" a prescindere > dall'elaborazione del singolo ciclo, allora aggiungi l'opzione interval= > Ricorda anche che se la pagina impiega tanto ad elaborare di aggiungere il > cfsetting settimeout ad un valore congruo. > Tutto questo perchéproprio perchè CF invia di default il risultato alla > fine dell'elaborazione, una pagina che impiegi un tempo di elaborazione > maggiore del tempo di timeout del webserver ti porterebbe ad avere che sul > browser ti arriva una pagina di timeout anziché la pagina elaborata. > Per evitare ciò usi cfflush per far si che arrivi al webserver, e quindi > al browser richiedente la pagina, una porzione di elaborazione che ha il > duplice scopo di far notare un qualche avanzamento della pagina e di tenere > attiva la connessione CF -> Webserver -> browser > Quindi, per ridponderti, con cfflush senza parametri presenta l'utput > generato fino a quel momento (non ogni tot seondi), se metti il parametro > interval ti invia l'elaborato ogni tot byte, se non lo usi affatto l'invia > alla fine dell'elaborazione dell'intera pagina. > <CiBerFiduciaInCF> > Aggiungo che CF ha SEMPRE voglia di inviarti l'output, è una delle > certezze.... > </CiBerFiduciaInCF> > CiBer > > > Il 04/05/2012 12.16, Puglia Marco ha scritto: **** > > **** > > Quando dici “quello che ha pronto” cosa intendi? All’interno del loop > scrivo delle cose sul browser, quando le visualizza? Ogni tot tempo? Ogni > tot byte? Quando ne ha voglia, se ne ha voglia?**** > > **** > > Grazie J**** > > **** > > ================================ > *Marco Puglia > **Project Manager > **Business-e S.r.l. <http://www.business-e.it/>* (an Itway Group Company) > > Via F.lli Lumière, 65 - 48010 Ravenna**** > > Tel. +39 0544.460413 - Fax +39 0544.272297**** > > Cell. 348 4759233**** > > > *Italy*, *France*, *Spain*, *Portugal, Greece, Turkey* > Ravenna, Milano, Trento, Bari, Massa, Roma > Paris, Barcelona, Madrid, Lisboa, Athina, Istanbul, Ankara > ================================**** > > **** > > *Da:* [email protected] [mailto:[email protected]<[email protected]>] > *Per conto di *CiBer > *Inviato:* giovedì 3 maggio 2012 19:49 > *A:* [email protected] > *Oggetto:* Re: Elaborare query con molti record**** > > **** > > **** > > cflush con l'opzione interval=n ti manda dati verso il webserver e quindi > il browser ogni n bytes da presentare, per cui metterlo all'interno del > loop non ha alcun senso. > Se vuoi, invece, avere un output "a comando" devi mettere il solo tag > cfflush SENZA parametri, ed allora ha senso metterlo all'interno del loop > perché invia quello che ha pronto quando gli dici di inviare > CiBer > > Il 03/05/2012 18:32, Fabio Serra ha scritto: **** > > **** > > mettici qualcosa in output tipo dei puntini**** > > ... <cfflush interval="10"> **** > > 2012/5/3 Puglia Marco <[email protected]> > > > **** > > **** > > In effetti così sembra funzionare, però non sono ancora riuscito a capire > bene il funzionamento di <cfflush>, se lo metto dentro il loop della query > in questo modo:**** > > <cfloop query="elenco">**** > > <cfset midean13=elenco.codiceean>**** > > <cfquery name="trova" datasource="liberamente">**** > > select * from libridb where > idean13='#midean13#'**** > > </cfquery>**** > > <cfif trova.recordcount eq 1>**** > > <cfoutput>#midean13#</cfoutput> non trovato > (da aggiungere)<br>**** > > </cfif>**** > > <cfflush interval="10">**** > > </cfloop>**** > > **** > > Non mi mostra niente durante l’elaborazione, rimane fermo per qualche > secondo e poi visualizza la pagina a loop concluso.**** > > Come mai?**** > > **** > > ================================ > *Marco Puglia > **Project Manager > **Business-e S.r.l. <http://www.business-e.it/>* (an Itway Group Company) > > Via F.lli Lumière, 65 - 48010 Ravenna**** > > Tel. +39 0544.460413 - Fax +39 0544.272297**** > > Cell. 348 4759233**** > > > *Italy*, *France*, *Spain*, *Portugal, Greece, Turkey* > Ravenna, Milano, Trento, Bari, Massa, Roma > Paris, Barcelona, Madrid, Lisboa, Athina, Istanbul, Ankara > ================================**** > > **** > > *Da:* [email protected] [mailto:[email protected]] *Per > conto di *Fabio Serra > *Inviato:* mercoledì 25 aprile 2012 12:56 > *A:* [email protected] > *Oggetto:* Re: Elaborare query con molti record**** > > **** > > **** > > Ma dopo quanto tempo ti va in time-out? Senza impelagarti in altre cose > hai aumentato il timeout di coldfusion ed usato cfflush per non far andare > in tiimeout il browser?**** > > **** > > All'inizio della procedura metti un bel**** > > **** > > <cfsetting requestTimeOut = "1800"> numero di secondi**** > > **** > > poi dentro il loop della query metti un <cfflush>**** > > **** > > così manda sempre al browser qualcosa e non va in timeout. Guardati bene > cfflush dove puoi specificarli ogni quanti byte mandare qualcosa al browser > etc etc. **** > > Comunque in questo modo il browser non va mai in timeout e neanche > coldfusion. Dovresti aver risolto.**** > > **** > > **** > > **** > > **** > > 2012/4/23 Puglia Marco <[email protected]>**** > > **** > > Vi pongo questo quesito che mi attanaglia ormai da diverso tempo.**** > > **** > > Situazione**** > > Ho una query che estrare i dati da una tabella su Mysql (circa 800.000 > record).**** > > **** > > Necessità**** > > Per ogni record estratto, devo controllare se esiste l’ID su un’altra > tabella, in caso negativo vado ad aggiungere il record sulla seconda > tabella.**** > > **** > > Problema**** > > Se eseguo un loop sulla query per tutti gli 800.000 record il browser va > in timeout.**** > > Ho provato a spezzare la query e ricaricare lo script ogni 10000 record, > ma quanto arrivo a 200.000 il browser mi dice che c’è un problema di loop. > **** > > Come posso risolvere?**** > > **** > > Grazie a tutti in anticipo per la risposta.**** > > **** > > **** > > ================================ > *Marco Puglia > **Project Manager > **Business-e S.r.l. <http://www.business-e.it/>* (an Itway Group Company) > > Via F.lli Lumière, 65 - 48010 Ravenna**** > > Tel. +39 0544.460413 - Fax +39 0544.272297**** > > Cell. 348 4759233**** > > > *Italy*, *France*, *Spain*, *Portugal, Greece, Turkey* > Ravenna, Milano, Trento, Bari, Massa, Roma > Paris, Barcelona, Madrid, Lisboa, Athina, Istanbul, Ankara > ================================**** > > **** > > **** > > > > **** > > **** > > -- **** > > Fabio Serra > [email protected] > http://faser.net**** > > **** > > > > **** > > **** > > -- > Fabio Serra > [email protected] > http://faser.net**** > > **** > > >