根据 PHP 7.0.0,PHP 中的字符串在 64 位版本中没有特定的长度限制。但是,32 位版本和早期版本施加了 2GB(2147483647 字节)的限制。
在 PHP 5.x 中,由于使用,字符串被限制为 231-1 字节有符号 32 位整数来记录长度。
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中文网其他相关文章!