Abbiamo utilizzato php flush per "vuoto" una pagina immediatamente non appena si fa clic e anche per inviare la navigazione e i componenti principali della pagina in modo che una pagina venga visualizzata quasi istantaneamente , anche se a volte il contenuto potrebbe richiedere molto tempo per essere caricato.PHP flush stopped flushing in IIS7.5
Questo ha funzionato molto bene.
Recentemente abbiamo eseguito l'aggiornamento da IIS 7.0 a 7.5 e ora lo svuotamento non funziona. Durante l'analisi del problema, abbiamo disattivato la compressione per file sia statici che dinamici. Abbiamo anche disattivato il caching dell'output.
Abbiamo anche disattivato la compressione di zlib e disattivato il buffering in php.ini.
Al fine di verificare il problema che abbiamo il seguente script
@ini_set("output_buffering", "Off");
@ini_set('implicit_flush', 1);
@ini_set('zlib.output_compression', 0);
ob_start();
echo "starting...<br/>\n";
for($i = 0; $i < 5; $i++) {
print "$i<br/>\n";
ob_end_flush();
ob_flush();
flush();
ob_start();
sleep(2);
}
print "DONE!<br/>\n";
Il browser mostra solo lo stato di caricamento (qualunque cosa sia in qualsiasi browser, in IE Sembra una GIF animata Ajax, in Firefox la la scheda indicherà "Connessione in corso ...") per 10 secondi, quindi improvvisamente verrà visualizzata l'intera uscita.
Abbiamo provato varie combinazioni di flush, ob_flush e ob_end_flush basate su domande simili su questo sito. Nessuno di loro funziona. C'è un modo per rendere IIS/PHP scaricare i dati?
Questo ha funzionato. Separandolo pezzo per pezzo per vedere quale è la chiave ... –
@Jeff, la demo dovrebbe aiutare un po ':-) – Neal
Sembra che la chiave sia il tipo di contenuto: text/html; charset = utf-8. Anche l'aggiunta come intestazione funziona. In particolare sembra che il set di caratteri = utf-8 sia ciò che lo fa funzionare. –