Re: R: Elaborare query con molti record

Ciro Bernini <[email protected]>
Newsgroups gmane.comp.cms.cold-fusion.devel.italian
Message-ID <[email protected]>
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]] *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]
>     <mailto:[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 <tel:%2B39%200544.460413> - Fax +39
>     0544.272297 <tel:%2B39%200544.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]>
>     [mailto:[email protected]
>     <mailto:[email protected]>] *Per conto di *Fabio Serra
>     *Inviato:* mercoledì 25 aprile 2012 12:56
>     *A:* [email protected] <mailto:[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]
>     <mailto:[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 <tel:%2B39%200544.460413> - Fax +39
>     0544.272297 <tel:%2B39%200544.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] <mailto:[email protected]>
>     http://faser.net
>
>
>
>     -- 
>     Fabio Serra
>     [email protected] <mailto:[email protected]>
>     http://faser.net
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.