PHP 7.0.0 によると、PHP の文字列には 64 ビット ビルドの長さに関する特定の制限はありません。ただし、32 ビット ビルドとそれ以前のバージョンでは、2 GB (2147483647 バイト) の制限が課されます。
PHP 5.x では、文字列は 231-1 バイトに制限されていました。
PHP スクリプトには、変数に割り当てることができる合計メモリに制限があり、事実上、変数の長さに上限が設けられています。単一の文字列変数。この制限は、php.ini のmemory_limit ディレクティブによって設定されます。 PHP 5.2 ではデフォルトで 128MB、以前のバージョンでは 8MB になります。
メモリ制限が指定されていない場合、デフォルトはコンパイル中に設定された値になります。 php.ini で -1 の値を割り当てると、メモリ チェックが無効になり、オペレーティング システムが提供する限りのメモリをスクリプトで使用できるようになります。
メモリ制限ディレクティブは、実際的な制限を課します。理論上の制限に関係なく、文字列の長さに依存します。さらに、file_get_contents() などの関数を使用してファイルの内容を丸呑みする場合、ファイルのサイズが要因になる可能性があります。
簡単なデモ:
<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>
ここでは、 1MB のメモリ制限が設定されています。 255KB の文字列メモリの割り当ては制限を超えませんが、256KB を割り当てようとすると、制限に達したため致命的なエラーが発生します。
以上がPHP の文字列の長さに関する実際的な制限は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。