Edit report at https://bugs.php.net/bug.php?id=64998&edit=1
ID: 64998 Updated by: ras...@php.net Reported by: m00n dot silv3r at gmail dot com Summary: php-cgi is buffering output Status: Analyzed Type: Bug Package: *General Issues Operating System: Ubuntu, Centos PHP Version: 5.4.16 Block user comment: N Private report: N New Comment: So what exactly is your bug report? Are you saying that: PHP 5.4.x + Debian + Apache 2.2.22 + Cgi is fine but PHP 5.4.x + Ubuntu and Centos + Apache 2.2.22 + Cgi is not? Previous Comments: ------------------------------------------------------------------------ [2013-06-09 04:50:20] m00n dot silv3r at gmail dot com Following has been tested to be working fine PHP Version 5.4.4-14 + Debian + Apache 2.2.22 + Cgi Output comes in realtime as expected. ------------------------------------------------------------------------ [2013-06-09 04:20:17] ras...@php.net I don't see how. CGI is pretty simple. It just writes to stdout and when you call flush() cgi does fflush(stdout). If you are seeing 4k buffers, it isn't coming from PHP. Try it without your web server. Emulate CGI by setting the right env variables (see the CGI spec) and you will see there is no buffering. ------------------------------------------------------------------------ [2013-06-09 04:14:11] m00n dot silv3r at gmail dot com No mod deflate or mod gzip is there. Apache does not appear to be buffering the output. This is further confirmed when debugging with telnet. When opening the page with telnet, the output comes in chunks of 4K. This indicates that its php that is buffering the content. ------------------------------------------------------------------------ [2013-06-09 03:47:56] ras...@php.net I doubt there is a bug here. Your data is likely being buffered by your web server, most likely due to mod_deflate being enabled. ------------------------------------------------------------------------ [2013-06-09 03:08:24] m00n dot silv3r at gmail dot com Description: ------------ Here is the program ----------------------------------- ini_set('output_buffering', 0); // Implicitly flush the buffer(s) ini_set('implicit_flush', true); ob_implicit_flush(true); header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); // recommended to prevent caching of event data. //Should output step by step in realtime for($i = 0; $i < 10; $i++) { echo sleep(1) . 'Ting'; ob_flush(); flush(); } -------------------------------------- When opened in browser, it should output data in realtime, with each echo statement. However it is outputting only after script execution completes. Tested on Apache 2.2.22 + Php running as cgi, and with mod_fastcgi Php CLI works as expected. This happens on Php 5.4.x ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=64998&edit=1