Thanks for the feedback.  

A way to somehow limit the caching of expressions
would be ideal, otherwise, the memory is lost forever
with no way to reclaim it.  I imagine a limited size
cache which keeps only the most used expressions would
be ideal.

If anyone can tell me which source file has the
'caching' code in it that would be very appreciated.

Jase

--- Ron Korving <[EMAIL PROTECTED]> wrote:

> FIFO, with the addition that one that's re-used,
> will be moved to the
> beginning of the list, would (I think) greatly
> benefit the cache hit-rate.
> 
> Just my $0.02
> 
> Ron
> 
> "Derrell Lipman"
> <[EMAIL PROTECTED]> wrote in
> message
> news:[EMAIL PROTECTED]
> > Ilia Alshanetsky <[EMAIL PROTECTED]> writes:
> >
> > > This is not a bug, but rather expected behavior.
> PCRE extension caches
> > > compiled regular expressions so that subsequent
> runs of the same regex
> do
> > > not need to perform the compilation step. In
> your example you are
> generating
> > > new regex in an unterminated loop, so it's no
> surprise that PHP
> eventually
> > > exhausts the available memory and terminates.
> >
> > Since PHP never knows what the user might do or
> how long the application
> might
> > run for, perhaps the cache, a useful feature in
> this case, should have a
> > maximum cache size.  If the maximum cache size is
> exceeded, the oldest
> > (ideally) cached compiled regexp would be deleted
> from the cache.
> >
> > It's probably reasonable to keep only a very small
> number of compiled
> regular
> > expressions in cache.  Intuition, at least, tells
> me that if a regular
> > expression isn't reused "soon" the compile time is
> likely not a big deal.
> >
> > I'm guessing that the regular expressions are
> maintained in such an order
> that
> > the requested one can be found quickly (via a
> hash?  binary search?).
> Given
> > my earlier assumption that only a small number
> really need be cached, they
> > could instead be kept in FIFO order, and a simple
> linear search of the
> (small)
> > list done to see if the requested regexp is
> cached.  When it's not found,
> the
> > one at tail of the queue (assuming the queue is
> full) would be deleted to
> make
> > room for a new one which would be pushed onto the
> head of the queue.
> >
> > Since my assumption is based purely on intuition,
> is there any indication
> from
> > "real life" that in fact, keeping many regexps in
> the cache is truly
> > beneficial?
> >
> > Cheers,
> >
> > Derrell
> 
> -- 
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 



                
__________________________________
Do you Yahoo!?
Yahoo! Mail is new and improved - Check it out!
http://promotions.yahoo.com/new_mail

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

Reply via email to