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

Reply via email to