Hi Christoph,

> -----Original Message-----
> From: Christoph Becker [mailto:cmbecke...@gmx.de]
> Sent: Tuesday, August 4, 2015 2:35 AM
> To: Anatol Belski <anatol....@belski.net>; 'Christoph Becker'
> <cmbecke...@gmx.de>; 'Pierre Joye' <pierre....@gmail.com>
> Cc: 'PHP internals' <internals@lists.php.net>
> Subject: Re: [PHP-DEV] PCRE JIT stack size limit
> 
> On 27.07.2015 at 13:28, Anatol Belski wrote:
> 
> >> -----Original Message-----
> >> From: Christoph Becker [mailto:cmbecke...@gmx.de]
> >> Sent: Monday, July 27, 2015 12:06 AM
> >> To: Anatol Belski <anatol....@belski.net>; 'Pierre Joye'
> >> <pierre....@gmail.com>
> >> Cc: 'PHP internals' <internals@lists.php.net>
> >> Subject: Re: [PHP-DEV] PCRE JIT stack size limit
> >>
> >> Definitely interesting ideas.  However, currently I'm leaning towards
> >> a full- fledged solution in PHP 7.1 (whatever that may be), and to
> >> only add the error constant for PHP 7.0.  Users can set pcre.jit=0 in
> >> php.ini and not change the setting during runtime, if necessary.
> >>
> >> FWIW, some hours ago I've implemented the clean whole cache solution:
> >> <https://github.com/cmb69/php-
> >> src/commit/c41d78046da48db2fa8f5bd82fd6ac58099288f8>.
> >
> > I wrote this script to test it
> https://gist.github.com/weltling/cd7f8127378989cca87c , but as expected -
> cache reset make a significant impact when the cache is full. Though, maybe as
> it's an exceptional situation, it were the simplest solution. Because it does 
> not
> affect the normal usage, maybe it's ok for 7.0. Maybe we should give this
> flexibility, still in doubt. But the constant IMHO should be done anyway.
> 
> IMHO we shouldn't introduce the cache clearing.  As your test script shows, 
> the
> performance might suffer considerably when switching pcre.jit in a running
> script.  Furthermore cached regexps currently in use (e.g.
> via preg_replace_callback) can't be cleared, what might lead to confusion (in
> very rare cases, though).
> 
> As it is now users can set pcre.jit=0 and so will retain full compatibility 
> with PHP
> 5.  If they're running with pcre.jit=1, they're able to get a meaningful error
> (PREG_JIT_STACKLIMIT_ERROR), if the default stack is not large enough (what
> indeed might rarely be the case).
> 
Same opinion here.

> If we leave it as this, I suggest to make pcre.jit PHP_INI_PERDIR instead of
> PHP_INI_ALL for PHP 7.0.  That still gives users the option to disable it 
> (ideally
> even on shared hosting), but avoids issues when dynamically switching the
> setting with regard to our regexp caching.  If we find a better solution for 
> PHP
> 7.1, we still can extend it to PHP_INI_ALL without a BC break.
>
That would disable possibility to change it in the registry which is 
PHP_INI_USER. That's something about shared hosting, too.
 
> For PHP 7.1 it might be worthwhile to consider to store jitted resp.
> non-jitted regexps in the cache, and to fetch what fits to the current 
> setting of
> pcre.jit (and otherwise to compile again, adding the new entry to the cache, 
> or
> maybe replacing it).
> 
Not sure to understand what you mean. Storing every pattern in both variants 
studied with and without JIT?

Regards

Anatol


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

Reply via email to