On 31 Aug, 2014, at 12:40 pm, Stas Malyshev <smalys...@sugarcrm.com> wrote:
> Hi! > >> This is just a thought; could we delay the call to >> `zend_call_destructors` ONLY IF there’s output buffering taking place >> (i.e. ob_get_level() > 0)? > > That wouldn't help - imagine this: > 1. ob_start is set > 2. shutdown is starting > 3. ob functions shut down, call function foo > 4. function foo creates an object of class FooBar > 5. ob shutdown ends, all output is flushed, etc. > 6. FooBar::__destruct is run and tries to output something So let it output something ... Trying to output something in a destructor after flushing the output seems rather fishy; at the same time I’m quite aware that it’s impossible to predict what some developers would expect to happen in such cases. > > That scenario still may have a problem. I'll check more into if it's > really a big deal outputting after OB shutdown (after all, some other > things may lead to it too) but conditioning dtor move does not solve > this problem. If it works this way we may as well move them there > permanently. Yeah, I can see now how my suggestion doesn’t really need the condition then :) > -- > Stanislav Malyshev, Software Architect > SugarCRM: http://www.sugarcrm.com/ -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php