pcre.backtrack_limit defaults to 100k. This is rather conservative.
It is limited by RAM size, not the ulimit on stack-size.
On a (2009-era) netbook, I can set pcre.backtrack_limit to 100 million, and the regex will happily process a 90 million character string in about 3 seconds. YMMV.
Laufzeit-Konfiguration
Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.
| Name | Standardwert | Änderbar | Änderungen |
|---|---|---|---|
| pcre.backtrack_limit | "1000000" | PHP_INI_ALL | Steht ab PHP 5.2.0 zur Verfügung |
| pcre.recursion_limit | "100000" | PHP_INI_ALL | Steht ab PHP 5.2.0 zur Verfügung |
Hier eine kurze Erklärung der Konfigurationsoptionen:
- pcre.backtrack_limit integer
-
PCREs Backtracking-Limit. Vor PHP 5.3.7 war der Standardwert 100000 (jetzt 1000000).
- pcre.recursion_limit integer
-
PCREs Rekursionslimit. Bitte beachten Sie, dass bei einem hohen Wert der gesamte verfügbare Prozess-Stack verwendet werden könnte und PHP schließlich (wenn es das vom Betriebssystem vorgegebene Limit für die Stackgröße erreicht) abstürzen könnte.
php at richardneill dot org
14-Jan-2011 09:55
chris at ocproducts dot com
02-Jul-2010 07:42
pcre.backtrack_limit sets the maximum bind length PREG calls (e.g. preg_replace_callback) can make. However the actual maximum seems to be approximately half the value set here, possibly due to the character encoding that PCRE runs with internally.
