Heim >Backend-Entwicklung >PHP-Tutorial >Was sind die praktischen Einschränkungen der Stringlänge in PHP?
Strings in PHP unterliegen in 64-Bit-Builds gemäß PHP 7.0.0 keiner bestimmten Begrenzung hinsichtlich ihrer Länge. Bei 32-Bit-Builds und früheren Versionen gilt jedoch ein Limit von 2 GB (2147483647 Bytes).
In PHP 5.x waren Zeichenfolgen aufgrund der Verwendung auf 231-1 Bytes beschränkt einer vorzeichenbehafteten 32-Bit-Ganzzahl, um die Länge aufzuzeichnen.
PHP-Skripte haben eine Begrenzung des Gesamtspeichers, den sie für Variablen zuweisen können, wodurch die Länge von a effektiv begrenzt wird einzelne String-Variable. Dieses Limit wird durch die Direktive „memory_limit“ in php.ini festgelegt. Der Standardwert beträgt 128 MB in PHP 5.2 und 8 MB in früheren Versionen.
Wenn kein Speicherlimit angegeben ist, wird standardmäßig ein Wert verwendet, der während der Kompilierung festgelegt wird. Durch die Zuweisung eines Werts von -1 in php.ini werden Speicherprüfungen deaktiviert, sodass das Skript so viel Speicher verwenden kann, wie das Betriebssystem zur Verfügung stellt.
Die Speicherlimitanweisung führt zu einer praktischen Einschränkung unabhängig von der theoretischen Grenze. Darüber hinaus kann die Größe der Datei ein Faktor sein, wenn der Inhalt mithilfe von Funktionen wie file_get_contents() ermittelt wird.
Eine einfache Demonstration:
<code class="php">ini_set('memory_limit', 1024*1024); printf("memory: %d\n", memory_get_usage(true)); $str = str_repeat('a', 255*1024); echo "Allocated string of 255KB\n"; printf("memory: %d\n", memory_get_usage(true)); $str = str_repeat('a', 256*1024); echo "Allocated string of 256KB\n"; printf("memory: %d\n", memory_get_usage(true));</code>
Hier: Es ist ein Speicherlimit von 1 MB festgelegt. Durch die Zuweisung von 255 KB String-Speicher wird der Grenzwert nicht überschritten, aber der Versuch, 256 KB zuzuweisen, löst aufgrund des Erreichens des Grenzwerts einen schwerwiegenden Fehler aus.
Das obige ist der detaillierte Inhalt vonWas sind die praktischen Einschränkungen der Stringlänge in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!