PHP 性能:内存密集型变量


PHP performance: Memory-intensive variable

假设一个多维关联数组,当打印为带有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 个用户同时请求它,您将需要该内存。