[prev in list] [next in list] [prev in thread] [next in thread]
List: apache-modperl
Subject: Re: Forcing order of perl output filters
From: Torsten Foertsch <torsten.foertsch () gmx ! net>
Date: 2008-04-28 15:50:21
Message-ID: 200804281750.21819.torsten.foertsch () gmx ! net
[Download RAW message or body]
On Mon 28 Apr 2008, woinshet abdella wrote:
> $r->add_config([
> 'PerlOutputFilterHandler BI::Apache::FilterBeforeIncludes',
> 'PerlSetOutputFilter INCLUDES',
> 'PerlOutputFilterHandler BI::Apache::FilterAfterIncludes']);
>
> I want the response to be processed by the filters in the order specified
> in the configruation as shown above. However for SOME reqeusts, the second
> handler, FilterAfterIncludes, is initiated before the first one finishes.
> The second handler to work properly it should start just after the first
> one because it expects some shared variable that is set by the first
> handler. It appears that this happens when the size of the response is big,
> is there any other way of forcing the order?
This is how filters work, no surprise. A filter is normally called multiple
times per request. Each time it processes a chunk of the output as it goes
down the output chain. When one filter has processed the chunk it is passed
to the next filter until it is eventually sent out on the wire. Then the next
chunk does the same. So you cannot expect one filter to see the complete
output before another one is started.
You can of course do some tricks like catching the whole output in the first
filter throwing the buckets away. Then at end of stream you can reinsert the
stuff. But that is quite complex. If you decide to go this way remember not
to cache the stuff in RAM but to write it to file(s). Otherwise your
processes will waste a lot of memory.
Torsten
--
Need professional mod_perl support?
Just hire me: torsten.foertsch@gmx.net
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic