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 会禁用检查,并允许您的脚本利用操作系统分配的内存(仍然受到实际和系统特定的限制)。
测试示例:
以下代码演示了如何测试内存使用情况和字符串分配限制:
<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中文网其他相关文章!