#25701 [Ver->Bgs]: Calling flush from within an output buffer prevents headers from being sent

From: Date: Tue, 30 Sep 2003 22:47:05 +0000
Subject: #25701 [Ver->Bgs]: Calling flush from within an output buffer prevents headers from being sent
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-48351@lists.php.net to get a copy of this message
 ID:               25701
 Updated by:       iliaa@php.net
 Reported By:      scottmacvicar at ntlworld dot com
-Status:           Verified
+Status:           Bogus
 Bug Type:         Apache2 related
 Operating System: *
 PHP Version:      4CVS
 New Comment:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php

Unlike Apache 1, when Apache 2 recieves a directive to flush it does so
right away sending any pending headers in the process. Since the
headers & text were already sent it cannot send the header indicating
the data that follows in gziped. Due to the missing header you get a
whole bunch of binary data.


Previous Comments:
------------------------------------------------------------------------

[2003-09-30 09:56:26] scottmacvicar at ntlworld dot com

Description:
------------
Calling flush in Apache and Apache 2 produce different results.

Within Apache after calling flush you can still send headers as the
output buffer prevents it from actually being flushed.

Within Apache 2 after calling flush you can no longer send headers even
though headers_sent still returns false.


Reproduce code:
---------------
<?php

ob_start();

echo 'test';
flush();

$newtext = ob_get_clean();

if (strpos(' ' . $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false
AND !headers_sent())
{
	header('Content-Encoding: gzip');
	$newtext = gzencode($newtext, 1);
}

header('Content-Length: ' . strlen($newtext));
echo $newtext;

?>

Expected result:
----------------
test

Actual result:
--------------
binary data


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=25701&edit=1


Thread (16 messages)

« previous php.bugs (#48351) next »