ID:               22713
 Updated by:       [EMAIL PROTECTED]
 Reported By:      public at asd-group dot com
-Status:           Open
+Status:           Analyzed
-Bug Type:         Output Control
+Bug Type:         Documentation problem
 Operating System: Windows XP
 PHP Version:      4.3.2-RC
 New Comment:

Here's the proto for ob_start():

proto bool ob_start([ string|array user_function [, int chunk_size [,
bool erase]]])

The 2nd parameter determines the chunk size..not how many times the
callback is called.



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

[2003-03-17 13:58:03] public at asd-group dot com

Hmm I did read and follow the notes, and the following sample script is
easily extacted from my description. 4.3.2 made no difference.

<?php

   $Html = Array();

   // Output buffering callback - just buffers text and returns "" to
PHP (telling it to ignore output)
   function PhpOutputCb ($txt)
   {
      global $Html;
      if ($txt != "")
         {$Html[] = $txt;}
      return "";
   }

   // Install output buffering callback, called on each output
statement (due to second parameter)
   // ISSUE: Second parameter should be documented
   ob_start('PhpOutputCb', 2);

   $t = "<pre>Before first output statement, headers_sent() = " . (int)
headers_sent() . " </pre>\n";

   echo "<html>\n".
        "<head>\n".
        "<meta http-equiv=\"Content-Type\" content=\"text/html;
charset=windows-1252\">\n".
        "<meta http-equiv=\"Content-Language\" content=\"en-us\">\n".
        "<title>Bug1</title>\n".
        "</head>\n".
        "<body>\n".
        $t . "\n";

   // ISSUE: Why does headers_sent() now return true, even though
headers should not have been sent (as no output actually sent)
   echo "<pre>After first output statement, headers_sent() = " .  (int)
 headers_sent() . " </pre>\n";

   echo "</body>\n".
        "</html>\n";

   // QUESTION: If commented-in, this exit() call causes PhpOutputCb to
be called with "" text - why ??
   //exit();

   // Turn off output buffering and physically output text which our
callback buffered
   ob_end_clean();
   foreach ($Html as $key => $val)
    { echo $val; }
?>

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

[2003-03-15 09:46:51] [EMAIL PROTECTED]

Did you read the 'How to report' page at all?
Did you try the latest stable snapshot from http://snaps.php.net yet?
We're about to release 4.3.2 soon, 
so you really should test it.

But most important: Add a short example script which clearly shows the
problem.


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

[2003-03-14 21:28:01] public at asd-group dot com

What information do you want - I can't think of anything else that
might be relevant ???

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

[2003-03-14 19:20:39] [EMAIL PROTECTED]

Not enough information was provided for us to be able
to handle this bug. Please re-read the instructions at
http://bugs.php.net/how-to-report.php

If you can provide more information, feel free to add it
to this bug and change the status back to "Open".

Thank you for your interest in PHP.


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

[2003-03-14 15:21:25] public at asd-group dot com

I'm using output buffering with a callback specified in ob_start. I'm
also using the second parameter of value 2 (callback gets called each
time output occurs in the application, rather than just once when the
whole output buffer is flushed).

My callback always returns an empty string, telling PHP to ignore the
output, however as soon as this happens (ie. first 'echo' or 'print'
statement in application) headers_sent starts to return true.

However the HTTP headers (and terminating blank line) cant have been
sent because my own calls to header() later on (eg. to set cookies)
still work. 

Also, due to this, any code which expects output buffering to be on,
and which checks headers_sent() before sending its own headers (after
doing HTML output) will break using output buffering this way. 
 


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


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


-- 
PHP Documentation Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to