PHP性能:内存密集型变量

时间:2012-04-18 01:09:17

标签: php performance memory

假设一个多维关联数组,当用print_r()作为文本打印时,会创建一个470 KiB文件。假设每个用户的服务器内存占用半个MiB,如果每个用户的服务器内存不同,是否合理?因此,如果1000个用户同时点击服务器,将消耗几乎半个GiB的内存?

感谢。

1 个答案:

答案 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个用户同时请求它,你将需要那个内存。

相关问题