Newsgroup: it.comp.www.asp
Titolo: response.flush

salve, la mia più che altro è una curiosità, ma penso si possa rivelare
utile.
dunque dovreste conoscere il metodo flush di response: se ad esempio ho
.......
dim aa,bb
response.write(now)
response.write("<br>")
response.flush
for aa=1 to 500000000
bb=aa+1
next
response.write(now)
.....
il metodo flush cancella tutti i dati del buffer però prima invia le
informazioni che vi erano già contenute.quindi si dovrebbe viuslizzare la
prima ora e poco dopo la seconda poichè per visualizzare la seconda ora ci
vuole un po' di tempo. il problema sta nel fatto che a me non succede
proprio così: le due ore appaino insieme, sebbene tra le due ci sia la
differenza dovuta al diverso tempo di elaborazione. lo so che questo esempio
è poco utile, però questo metodo può rivelarsi utile quando la pagina ha
molto materiale da elaborare.
spero di essere stato chiaro e che sappiate rispondermi
ciao

 response.write(now)
Innanzitutto il tuo codice a me funziona.
Vedo la prima data e...dopo due secoli... la seconda.
Prova questo
<%
response.buffer=true     '//Necessario
dim aa,bb
response.write(now)
response.write("<br>")
response.flush
for aa=1 to 500000
 bb=aa+1
 response.write("<br>" & bb)
 response.flush '// (*)
next
response.write(now)
%>
Prova a eseguirlo commentando la riga (*)
Noterai
- che Tutto l'elenco numerico viene stampato alla fine dell'elaborazione
- che è il tempo di attesa per l'elaborazione è relativam. basso
Se lasci la riga (*) non commentata
- vedrai stampare N valori numerici alla volta (N dipende dal buffer)
- il tempo di attesa sarà sensibilmente più alto a causa del continuo output
a video che viene forzato con response.flush
Spero ti sia utile
:)
Ciao

 a video che viene forzato con response.flush
vero di nuovo
però...
abbi pazienza, ma non riesco a capire. cioè mi torna che se lascio la riga *
non commentata siano stampati a video n valori dipendenti dal buffer e che
conseguentemente il tempo di atetsa sia alto.
però se elimino il response.flush della riga * dovrebbe fare esattamente
cosa fa se lascio la riga *, no?. non capisco perchè tutto l'elenco numerico
venga stampato alla fine dell'elaborazione insieme alle due date e che ci
metta pochissimo tempo.
scusa se sono duro di comprendonio, sono alle prime armi con asp. magari poi
questa domanda non è nemmeno che sia vitale per programmare in asp. ma sono
uno di quelli che se si fossilizza su qualcosa, non importa la sua
importanza, non si rassegna. spero che mi chiarirai ulteriormente le idee
ciao

 importanza, non si rassegna. spero che mi chiarirai ulteriormente le idee
- Sia commentando, sia non commentando il codice stampa a video i valori
numerici
- Con response.flush chiedi continuamente al server di inviare al client dei
dati. Questo ripetuto N volte ci impiega "molto" tempo.
- Senza response.flush l'output da inviare al client rimane in memoria fino
alla fine dell'elaborazione. Una volta terminato il ciclo, il server
comunica IN UNA SOLA VOLTA al client il risultato in output.
E' giusto spaccarsi la testa.
L'importante č avere molte bende nel cassetto per fasciarsela...
:)))

 :)))
Forse non mi sono spiegato bene. dunque, ho credo di aver capito per bene,
anche grazie a te, la funzione di
response.flush. mi torna il fatto che con o senza il secondo reponse.flush
il codice stampi a video i valori numerici.
adesso capisco anche perchè con quel response.flush impiega molto più tempo
che senza.
sono d'accordo sul fatto che con response.flush la prima data mi appare
subito e la seconda al termine dell'elaborazione, cioè quando ha finito di
stampare 5000000 volte a video. senza response.flush mi stampa la seconda
data alla fine dell'enorme elenco numerico e sono ancora d'accordo. quello
che non capisco, ed era questa la mia domanda originale, è perchè senza quel
response.flush non mi visualizza la prima data! dovrebbe essere indipendente
dal resto del cidice in quanto, prima del nostro response.flush, c'è un
altro response.flush che la dovrebbe inviare al client e poi proseguire.
quindi in base al codice, la prima data dovrebbe essere sempre visualizzata
immediatamente sia che il secondo response.flush ci sia (ed in effetti
accade!), sia che il secondo respose.flush non sia scritto( cosa che non
avviene!). ed inoltre, correggimi se sbaglio, scrivendo il seguente codice
<%
response.buffer=true
dim aa,bb
response.write(now)
response.write("<br>")
response.flush
for aa=1 to 5000000
 bb=aa+1
next
response.write(now)
%>
cioè senza fargli scrivere l'elenco numerico, dovrebbe =mente esserci una
differenza temporale seppur breve nella visualizzazione delle due date.
invece mi stampa due date che sono distanti l'una dall'altra di tot secondi
ma me le visualizza contemporaneamente e non dovrebbe essere così. anche
aumentando il numero delle volta del ciclo il risultato non cambia. perchè
tutto ciò? perchè se faccio stampare a video con un secondo response.flush
la prima data mi appare?
che relazione esiste tra le due?
inoltre poichè tu in risposta al primo messaggio mi hai detto che il codice
sopra ti ha funzionato sai dirmi se ci devono essere delle impostazioni
particolari nel browser o nel personal server web?
spero di essere staoc hiaro e che ancora una volta sarai così gentile da
rispondermi
ciao

 particolari nel browser o nel personal server web?
Non ne ho la piů pallida...
Sorry :(
Ciao

grazie lo stesso
ciao