Ho un oggetto per le attività e su __deconstruct(), è pensato per eseguire alcune delle attività di pulizia più lunghe dopo che il resto della pagina è già stato caricato. Sfortunatamente, buffer l'output e non lo invierà fino a dopo che le attività sono terminate (nulla viene stampato nelle attività).Disabilitazione del buffer di output in PHP
Ho letto attraverso http://www.php.net/flush e ho provato tutti i suggerimenti lì. Ovviamente ho provato a disabilitare output_buffering in php.ini. Ho disabilitato deflate_module, la compressione di zlib è disattivata, non ho mod_gzip. Chiamare flush() o ob_flush() non ha effetto, né abilitare implicit_flush.
Sto eseguendo XAMPP (attualmente apache 2.2.17, php 5.3.4) in Windows Server 2008 R2. PHP viene eseguito come un modulo.
E sì, ho potuto impostare qualche piccola modifica AJAX per eseguire il task manager o anche impostare un'attività programmata per eseguire questa specifica attività, ma il buffering dell'output è stato un problema anche altrove. Vorrei solo che se ne fosse andato a volte.
Da un thread simile, qualcuno ha suggerito vedendo quello seguente farebbe:
<?php
while (TRUE)
{
echo 'x';
flush();
sleep(1);
}
?>
Come previsto, la pagina visualizza nulla fino al tempo massimo di esecuzione viene raggiunto, a quel punto svuota il buffer.
Questo è diventato estremamente frustrante. Qualcuno ha qualche idea su cosa potrebbe ancora causarne il buffer?
Puoi confermare che l'output è ancora in fase di buffering rispetto al browser che non visualizza nulla (ad esempio, IE non visualizzerà nulla finché non riceve un numero di byte)? –
fa questa funzione http://php.net/manual/en/function.ob-get-level.php return 0? – dqhendricks
puoi provare questo se aiuta http://in3.php.net/manual/en/function.ob-end-flush.php –