假设一个多维关联数组,当打印为带有 的文本时print_r()
,会创建一个 470 KiB 的文件。如果每个用户的变量不同,假设所讨论的变量每个实例占用服务器内存的一半 MiB 是否合理?因此,如果 1000 个用户同时访问服务器,将消耗几乎半 GiB 的内存?
谢谢。
假设一个多维关联数组,当打印为带有 的文本时print_r()
,会创建一个 470 KiB 的文件。如果每个用户的变量不同,假设所讨论的变量每个实例占用服务器内存的一半 MiB 是否合理?因此,如果 1000 个用户同时访问服务器,将消耗几乎半 GiB 的内存?
谢谢。
IBM 有一篇关于这个主题的优秀文章:http: //www.ibm.com/developerworks/opensource/library/os-php-v521/
更新
原来的页面被撤了,现在JP版本还在https://www.ibm.com/developerworks/jp/opensource/library/os-php-v521/
基本要点是,您可以使用它memory_get_usage()
来检查您的脚本当前占用了多少内存:
// This is only an example, the numbers below will differ depending on your system
echo memory_get_usage () "\ n";. // 36640
$ A = str_repeat ( "Hello", 4242);
echo memory_get_usage () "\ n";. // 57960
unset ($ a);
echo memory_get_usage () "\ n";. // 36744
此外,您可以使用memory_get_peak_usage()
.
作为对您的问题的回答:print_r()
是数据的表示,其中包含大量的文本和格式。占用的内存本身会小于 的字符数print_r()
。多少取决于数据。你应该像上面的例子一样检查它。
无论您得到什么结果,都将针对每个执行脚本的用户,所以是的 - 如果 1000 个用户同时请求它,您将需要该内存。