假设一个多维关联数组,当用print_r()
作为文本打印时,会创建一个470 KiB文件。假设每个用户的服务器内存占用半个MiB,如果每个用户的服务器内存不同,是否合理?因此,如果1000个用户同时点击服务器,将消耗几乎半个GiB的内存?
感谢。
答案 0 :(得分:5)
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个用户同时请求它,你将需要那个内存。