Doc #65115 [Asn]: flush() disables compression from ob_gzhandler
Edit report at https://bugs.php.net/bug.php?id=65115&edit=1
ID: 65115
Updated by: cmb@php.net
Reported by: preinheimer@php.net
Summary: flush() disables compression from ob_gzhandler
Status: Assigned
Type: Documentation Problem
Package: Output Control
Operating System: linux
PHP Version: 5.4.16
Assigned To: preinheimer
Block user comment: N
Private report: N
New Comment:
I've just had a look at your submitted patch (edit.php.net), Paul.
It seems that it's not complete, because the man page would still
say:
| also doesn't affect PHP's userspace output buffering mechanism.
| This means you will have to call both ob_flush() and flush() to
| flush the ob output buffers if you are using those.
According to what has been said in this ticket this info is wrong.
Previous Comments:
------------------------------------------------------------------------
[2013-06-25 15:40:59] mike@php.net
flush() causes Apache2 to send it's headers, so the gzhandler cannot send any headers and does
nothing any more
------------------------------------------------------------------------
[2013-06-25 14:05:54] mike@php.net
Ok, my explanation pretty much applies to the Apache SAPI.
Due to premature flush()'ing the ob_gzhandler cannot set its headers anymore when it's
actually run.
------------------------------------------------------------------------
[2013-06-25 13:56:15] preinheimer@php.net
I'm using the apache 2.0 SAPI.
The build of PHP I used to confirm the bug doesn't include XHProf (I wanted a clean build to
report on).
I built with:
Command './configure' '--with-apxs2=/usr/local/apache2/bin/apxs'
'--with-mysql=mysqlnd' '--with-gd' '--enable-soap'
'--with-libxml-dir=/usr/lib/' '--with-mysql-sock=/tmp' '--with-tidy'
'--with-jpeg-dir=/usr/lib/' '--with-xsl' '--with-curl'
'--with-zlib' '--enable-gd-native-ttf' '--with-openssl'
'--with-mcrypt' '--with-pdo-mysql=mysqlnd' '--with-mysqli=mysqlnd'
'--with-bz2' '--enable-bcmath'
------------------------------------------------------------------------
[2013-06-25 13:49:38] mike@php.net
Looks like my explanation off the top of my head was not correct.
Which SAPI are you using? Does XHPROF override SAPI methods?
------------------------------------------------------------------------
[2013-06-25 12:33:48] preinheimer@php.net
So if I run:
<?php
ob_start('ob_gzhandler');
phpinfo();
ob_flush();
phpinfo();
flush();
With something like:
curl -H "Accept-Encoding: gzip, deflate" http://test.local/obtest.php
It looks (to me) like the entire output is compressed. The difference in behavior seems, well,
necessary to allow the end agent to actually be able to read the output. But confusing from a
"different output depending on what happened earlier" standpoint.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=65115
--
Edit this bug report at https://bugs.php.net/bug.php?id=65115&edit=1
Thread (4 messages)