您可能知道,Xdebug 从 2.* 版本开始就放弃了内存分析支持。请在此处搜索“已删除函数”字符串:http://www.xdebug.org/updates.php
移除的功能
删除了对内存分析的支持,因为它不能正常工作。
所以我尝试了另一种工具,它对我来说效果很好。
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文件
使用 Google 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 或文件系统中。
更多详情see my answer here。
黑火
Blackfire 是 SensioLabs 的 PHP 分析器,Symfony2 的家伙 https://blackfire.io/
如果您使用 puphpet 设置您的虚拟机,您会很高兴知道它受支持 ;-)