Doc #65115 [Asn]: flush() disables compression from ob_gzhandler

From: Date: Wed, 28 Sep 2016 14:39:19 +0000
Subject: Doc #65115 [Asn]: flush() disables compression from ob_gzhandler
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-13952@lists.php.net to get a copy of this message
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)

« previous php.doc.bugs (#13952) next »