PHP性能:内存密集型变量

dot*_*hen 0 php memory performance

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

谢谢.

nic*_*nda 5

有在IBM这个话题的优秀文章: http://www.ibm.com/developerworks/opensource/library/os-php-v521/

UPDATE

原来的页面已被删除,目前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
Run Code Online (Sandbox Code Playgroud)

此外,您还可以检查脚本的峰值内存使用情况memory_get_peak_usage().

作为您的问题的答案:print_r()是一种数据的表示,其中包含文本和格式.占用的内存本身将小于字符数print_r().多少取决于数据.你应该像上面的例子一样检查它.

不管结果你得到,这将是为每个用户执行脚本,所以是 - 如果1000个用户同时请求它,您将需要记忆.

  • 看起来你也应该[将`true`传递给`memory_get_usage`](http://stackoverflow.com/a/2651592/825789). (2认同)