【问题标题】:PHP performance: Memory-intensive variablePHP 性能:内存密集型变量
【发布时间】:2012-04-29 09:28:26
【问题描述】:

假设一个多维关联数组,当使用print_r() 打印为文本时,会创建一个 470 KiB 的文件。如果每个用户的变量不同,假设所讨论的变量每个实例占用服务器内存的一半 MiB 是否合理?因此,如果 1000 个用户同时访问服务器,将消耗近半 GiB 的内存?

谢谢。

【问题讨论】:

  • WTF 是“vim”标签在这里做的吗?

标签: php performance memory


【解决方案1】:

IBM 上有一篇关于这个主题的优秀文章: http://www.ibm.com/developerworks/opensource/library/os-php-v521/

更新

原版已下架,目前日文版还在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 个用户同时请求它,您将需要该内存。

【讨论】:

猜你喜欢
  • 2011-07-17
  • 1970-01-01
  • 2012-03-05
  • 2012-07-07
  • 1970-01-01
  • 2013-06-15
  • 2012-06-22
  • 2011-01-08
  • 1970-01-01
相关资源
最近更新 更多