Hello Michael,

  i never liked the output buffering code much becuase i find it too complex
and too much stuff there is interacting in a way one cannot understand
easily. If there is a simple solution at hand that solves some problem and
that thing disables selective features by just disallowing invocation of
certain control function i'd never be against. If it fixed a problem at hand
i'd be all for it of course. Anyway that would only increase the complexity.
So yes a redisign wouldn't hurt. And if that means we could get rid of
strange side effects of stuff that is imo abusing the output buffering by
using a temporary output buffer i'd appreciate it. However as said on irc i
am not sure it's worth the effort and cannot make out how much new problems
we'd head to. That you even provide a nice looking patch here shows that you
are confident with the idea and agree to do the work.

best regards
marcus

Thursday, March 2, 2006, 7:24:09 PM, you wrote:

> Zeev Suraski wrote:
>> I misread the post, I thought we were talking about ob_end_clean().  
>> Yes, ob_clean() may cause this problem to happen, but again, the right 
>> approach would be having an 'applicative' output buffer on top of the 
>> gzip output buffer.  We can look into letting output handlers denote 
>> that ob_clean() is not allowed on them.

> This would be in deed an option.

> If you still consider a rather fundamental enhancement of the output control
> code, please take a look at my initial try.  It already /seems to work/ but
> probably misses a few things.  I must admit though, that I did not fully
> understand the current implementation.

> Considered issues:
>         Support of contexts for internal output handlers that had to maintain
> it in a global variable, which caused those handlers being only usable
> once;  while often natural, like for the gz handler, still a limitation.
>         Conflict handlers, so that one doesn't need to incorporate that
> code directly in output.c, but register them from within an extension etc.
>         Distinct ops, like FLUSH and CLEAN to signal the handler what's
> going on; there should also be a possibility to change the abilities of
> a handler in runtime, which is not implemented yet, eg. the gz handler
> could remove the CLEANABLE and REMOVABLE flags when the first output
> did pass through it.

> Unfortunately I don't know which version of re2c Ilia used to generate
> the url scanner, so a big part of the diff is pretty useless; note that
> the patch is against current 5_1 CVS.

> http://dev.iworks.at/PATCHES/ob.patch.txt.gz
> http://dev.iworks.at/PATCHES/output.c.txt
> http://dev.iworks.at/PATCHES/php_output.h.txt

> Thanks a lot,
> -- 
> Michael - <mike(@)php.net>
> http://dev.iworks.at/ext-http/http-functions.html.gz




Best regards,
 Marcus

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to