Bug #16673 Updated: callback registered via ob_start is called when not expected
| From: | bob at mroczka dot com | Date: | Mon, 06 May 2002 21:53:02 +0000 |
| Subject: | Bug #16673 Updated: callback registered via ob_start is called when not expected | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-7082@lists.php.net to get a copy of this message | ||
ID: 16673
Updated by: bob@mroczka.com
Reported By: bob@mroczka.com
-Status: Feedback
+Status: Open
Bug Type: Output Control
Operating System: linux 2.4.18
PHP Version: 4.2.0
New Comment:
with the ob_end_clean call in my code my intention is to discard the
buffer and disable output buffering. i do not have any ob_flush calls
in my code.
here is some background on what i'm trying to do. in a nutshell i have
a call in my code (dio_fcntl) which attempts to get an exclusive lock
on a file. in theory this call can block forever (or until the script
execution timeout occurs). to alert the user that a timeout occurred
while waiting on the lock i create a buffer with an error message just
before the call to the code that may block. if the script gets the
lock before a timeout occurs i call ob_end_clean() to release the error
message in the buffer which is not needed. if a timeout occurs php
flushes this buffer containing the error message and the user is
notified of the error.
the purpose of registering a callback in my case is not to modify the
output buffer (the error message) but to put a message in the web
server error log that this problem occurred. i was expecting the
callback function to not get called when ob_end_clean() is executed.
in theory the callback should only be called in my case if the script
execution timer expires.
some code which can block
Previous Comments:
------------------------------------------------------------------------
[2002-05-03 23:13:30] yohgaki@php.net
I guess you have some ob_flush() functions, don't you?
------------------------------------------------------------------------
[2002-04-17 18:58:31] bob@mroczka.com
i have the following code where ... represents some
echo statements but does not include any ob_xxx calls.
ob_start("func");
...
ob_end_clean();
and func is defined as:
function func ($buf) {
error_log("got here",0);
return $buf;
}
when this code runs i get "got here" in my error log.
i am expecting the ob_end_clean call to turn off output
buffering which includes not calling the callback I
registered. i am using 4.2.0rc2 currently.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=16673&edit=1