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 が割り当てます (実際的なシステム固有の制約が適用されます)。
テスト例:
次のコードは、メモリ使用量と文字列割り当て制限をテストする方法を示しています:
// 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));
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3