>"Chris Andrew" <[EMAIL PROTECTED]> wrote in message
>[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
>> I use a script which initially sends a friendly message to a browser, and
>> then goes about some lengthy processing. The browser is IE and I am aware
>of
>> the 256 byte issue.
>>
>> The script worked nicely in php.4.1.1 but since installing 4.2.1, the
>flush
>> function doesn't do its job. However, it works if I ommit session_start()
>?

I can't speak for the differences between 4.1.1 and 4.2.1, but maybe
the following information will help you:

On my site I have a custom error handler than displays a "friendly"
error message screen and emails me an error report.  I use output
buffering because if an error occurs I don't want this friendly error
message screen to be rendered in the middle of whatever else was going
on when the error occured...I get the contents of the buffer and then
and then call ob_end_clean() to empty it before I display the friendly
error message.

I noticed that this was not working properly on one section of my site
that used sessions.  I noticed that if I called session_start() and
then an error occured, I got the error message in the middle of the
the page, just as if I hadn't cleared the buffer.

I then discovered why...  I am using trans sid support to perpetuate
the session id, and apparently this is implemented internally using an
output buffer.  Trans sid buffers the page output, then rewrites the
hrefs and insert the hidden form values before flushing the buffer to
the screen.  Apparently you can start multiple buffers, and they are
stacked.  If you call a buffer function such as ob_end_clean(), it
*automatically* operates on the last buffer in the stack...i.e. the
buffer that was most recently created.  In my case this buffer what
the trans sid one, and NOT the one that I started.

To make a long story short, I had to end up calling ob_end_clean()
TWICE...once to flush the trans sid buffer and once more to flush
mine.  Maybe something similar is at work with your problem.  Try
calling the flush function twice back to back and see if that makes
any difference...

If anyone knows of a way to determine how many output buffers have
been started or are currently active please let me know...

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

Reply via email to