PHP の文字列の長さの上限は何ですか?
クエリ:
問題を解決できますか? PHP の文字列ストレージ容量の制限は何ですか?測定しようとしましたが、システムのメモリ (2GB) がテストに十分かどうかわかりません。事前に定義された上限はありますか?文字列がこのしきい値を超えた場合、どのようなアクションが発生しますか?連結またはエラー?
応答:
PHP.net のドキュメントによると、文字列の長さの制限は PHP 7.0.0 で廃止されました。 64 ビット ビルドの場合。 32 ビット ビルド以前のバージョンでは、文字列の最大サイズが 2GB (2147483647 バイト) に達する可能性がありました。
PHP 5.x では、文字列は 231-1 バイトに制限されていました。内部コードは、その長さを 32 ビットの符号付き整数で追跡しました。
追加の考慮事項:
file_get_contents() などの関数を使用して、ファイルのコンテンツ全体をロードできます。ただし、PHP スクリプトのすべての変数に対する全体的なメモリ割り当てにより、個々の文字列変数の長さが制限されます。
メモリ制限ディレクティブ:
php.ini 設定ファイルのmemory_limit ディレクティブによって、これが設定されます。限界。デフォルトは、PHP 5.2 では 128MB、以前のバージョンでは 8MB です。
php.ini でmemory_limit が設定されていない場合、デフォルトは PHP バイナリでコンパイルされた値になります。これは、カスタムデフォルトで PHP を再コンパイルすることで変更できます。 .
php.ini でmemory_limit を -1 に設定すると、チェックが無効になり、OS が割り当てたメモリをスクリプトで使用できるようになります (実際的なシステム固有の制約は依然として適用されます)。
テスト例:
次のコードは、メモリ使用量と文字列割り当て制限をテストする方法を示しています:
<code class="php">// Limit memory usage to 1MB ini_set('memory_limit', 1024*1024); // Basic operation uses about 768KB printf("memory: %d\n", memory_get_usage(true)); $str = str_repeat('a', 255*1024); echo "Allocated string of 255KB\n"; // All 1MB of memory has been allocated printf("memory: %d\n", memory_get_usage(true)); // Exceeding the limit causes a fatal error $str = str_repeat('a', 256*1024); echo "Allocated string of 256KB\n"; printf("memory: %d\n", memory_get_usage(true));</code>
以上がPHP では文字列はどのくらいの大きさまで可能ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。