您可能知道,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
使用谷歌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 来设置虚拟机,您会很高兴知道它受支持;-)