Grenze von preg_match
-
Dieser Beitrag: http://www.c-plusplus.net/forum/viewtopic.php?t=43287&postdays=0&postorder=asc&highlight=pregmatch&start=0
Dort habe ich das Problem gehabt, dass preg_match bei zu großen Teilausdrücken abstürzt.
Jetzt gibt es schon das nächste: Kennt irgendjemand die Grenze, bei der das passiert?Ich brauche die genaue Grenze, ab der folgendes Pattern zum Absturz des php-Interpreters führt:
#/\*((.|\n)*?)\*/#
Zur Info:
Das Pattern passt auf normale C-Kommentare.Ich suche schon länger mit Google (auch in den Groups), ohne Erfolg
Vielleicht hab ich einfach nicht die richtigen Suchwörter.
-
Es ist eindeutig zu spät.
<?php $x = ''; while (true) { $x .= ' '; $length = strlen($x); preg_match('#/\*((.|\n)*?)\*/#', '/*' . $x . '*/', $match); echo "$length\r\n"; } ?>
Dieses Skript liefert 2152 als maximale absturzfreie Länge. Kann das jemand mal auf einer anderen php-Version testen?
Ich hab PHP/4.3.2 (Win32-Version).
-
Moin cd9000,
bei mir stürzt es nicht ab, sondern wird ausgeführt, bis die maximale Ausführungszeit des Skriptes überschritten wird:
Fatal error: Maximum execution time of 30 seconds exceeded in /usr/local/apache/htdocs/test/preg_match.php on line 7
PHP: 4.2.2
OS: SuSE Linux 8.2
Webserver: Apache 1.3.12Vielleicht solltest Du Dich damit mal an die PHP-Mailingliste wenden. Das wird die sicher interessieren, falls das am preg_match() liegt.
Nachtrag: Die letzte Ausgabe ist übrigens: 4589
MfGr,
mid
-
Unter Linux stürzt das bei mir auch nicht ab. Komisch
Ich habe SuSE 8.1.
Ich geh jetzt einfach mal davon aus, dass jeder halbwegs gescheite Server nicht die Windows-Binary von php benutzt.
-
cd9000 schrieb:
Ich geh jetzt einfach mal davon aus, dass jeder halbwegs gescheite Server nicht die Windows-Binary von php benutzt.
das kannst du ruhig machen.
apache auf windows ist nicht gut und PHP und IIS ist käse.
wie sollte man also PHP auf windows servern sinnvoll verwenden?