您可能需要一个内存探查器。我已经收集了SO的信息,但我已经复制了一些重要的事情,也可能对你有所帮助。
您可能知道,Xdebug 自 2.* 版本以来就放弃了对内存分析的支持。请在此处搜索“已删除的函数”字符串:http://www.xdebug.org/updates.php
已删除的函数
删除了对内存分析的支持,因为内存分析无法正常工作。
其他探查器选项
php-memory-profiler
https://github.com/arnaud-lb/php-memory-profiler。这是我在Ubuntu服务器上启用它所做的:
sudo apt-get install libjudy-dev libjudydebian1
sudo pecl install memprof
echo "extension=memprof.so" > /etc/php5/mods-available/memprof.ini
sudo php5enmod memprof
service apache2 restart
然后在我的代码中:
<?php
memprof_enable();
// do your stuff
memprof_dump_callgrind(fopen("/tmp/callgrind.out", "w"));
最后用KCachegrind打开文件callgrind.out
使用谷歌gperftools(推荐!
首先,通过在此处下载最新的软件包来安装Google gperftools:https://code.google.com/p/gperftools/
然后一如既往:
sudo apt-get update
sudo apt-get install libunwind-dev -y
./configure
make
make install
现在在您的代码中:
memprof_enable();
// do your magic
memprof_dump_pprof(fopen("/tmp/profile.heap", "w"));
然后打开您的终端并启动:
pprof --web /tmp/profile.heap
pprof将在您现有的浏览器会话中创建一个新窗口,如下所示:

Xhprof + Xhgui(在我看来,最好的分析CPU和内存)
使用Xhprof和Xhgui,您也可以分析CPU使用情况,或者如果这是您目前的问题,则仅分析内存使用情况。这是一个非常完整的解决方案,它为您提供了完全控制,日志可以写入mongo或文件系统中。
有关更多详细信息,请参阅此处。
黑火
Blackfire是SensioLabs的PHP分析器,Symfony2的家伙 https://blackfire.io/
如果您使用 puphpet 来设置虚拟机,您会很高兴知道它受支持;-)
Xdebug 和跟踪内存使用情况
XDEBUG2 是 PHP 的扩展。Xdebug允许您记录所有函数调用,包括参数,并以不同的格式将值返回到文件中。有三种输出格式。一个是人类可读的跟踪,另一个更适合计算机程序,因为它更容易解析,最后一个使用HTML来格式化跟踪。您可以使用该设置在两种不同的格式之间切换。此处提供了一个示例
福普
forp 简单、非侵入式、面向生产的 PHP 分析器。一些功能是:
-
测量时间和为每个功能分配的内存
-
处理器使用率
-
函数调用的文件和行号
-
输出为谷歌的跟踪事件格式
-
函数标题
-
函数分组
-
函数的别名(对匿名函数有用)
断续器
DBG是一个功能齐全的php调试器,一个交互式工具,可以帮助您调试php脚本。它适用于生产和/或开发 WEB 服务器,并允许您在本地或远程从 IDE 或控制台调试脚本,其功能包括: