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 会禁用检查并允许您的脚本利用操作系统分配的内存(仍受实际情况和
测试示例:
以下代码演示了如何测试内存使用和字符串分配限制:
// 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