ホームページ >バックエンド開発 >PHPチュートリアル >PHP の文字列の最大長の制限は何ですか?また、メモリの制限によってどのような影響を受けますか?

PHP の文字列の最大長の制限は何ですか?また、メモリの制限によってどのような影響を受けますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-31 22:55:29354ブラウズ

What is the maximum string length limit in PHP, and how is it affected by memory limitations?

PHP 文字列の長さの制限

PHP では広範な文字列の操作と保存が可能ですが、文字列の最大長に関しては制限があります。

64 ビット ビルド

PHP ドキュメント (http://php.net/manual/en/ language.types.string.php) に記載されているように、 PHP 7.0.0 以降の 64 ビット ビルドにおける文字列の長さに関する特定の制限。これは、理論的にはシステム メモリが許す限り文字列を長くできることを意味します。

32 ビット ビルドおよび PHP 5.x

32 ビット ビルドおよび PHP バージョンの場合7.0.0 より前では、長さを符号付き 32 ビット整数として記録する内部コードにより、文字列の最大長は 231-1 バイトに制限されていました。

ファイル処理とスクリプト実行のメモリ制限

固有の文字列長制限はないかもしれませんが、PHP スクリプトには、php.ini 設定ファイルのmemory_limit ディレクティブによって強制されるメモリ制限があります。この制限は、PHP 5.2 ではデフォルトで 128MB、以前のバージョンでは 8MB に設定されており、文字列を含むすべての変数に割り当てられるメモリの量に影響します。この制限を超えると、スクリプトは致命的なエラーで終了します。

実際の例

次の PHP コードは、メモリ制限が文字列割り当てにどのような影響を与えるかを示しています。

<code class="php">// limit memory usage to 1MB 
ini_set('memory_limit', 1024*1024);

// initially, PHP seems to allocate 768KB for basic operation
printf("memory: %d\n",  memory_get_usage(true));

$str = str_repeat('a',  255*1024);
echo "Allocated string of 255KB\n";

// now we have allocated all of the 1MB of memory allowed
printf("memory: %d\n",  memory_get_usage(true));

// going over the limit causes a fatal error, so no output follows
$str = str_repeat('a',  256*1024);
echo "Allocated string of 256KB\n";
printf("memory: %d\n",  memory_get_usage(true));</code>

この例では、スクリプトは 255KB 文字列の割り当てに成功しましたが、メモリ制限により 256KB 文字列の割り当てに失敗しました。正確なメモリ制限は、システム リソースとアーキテクチャによって異なります。

以上がPHP の文字列の最大長の制限は何ですか?また、メモリの制限によってどのような影響を受けますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。