PHP调优之Profiling

Posted by 张晨 on February 24, 2022

本次使用的工具是Xdebug profiling & KCacheGrind

环境准备

这次演示我就使用我最熟悉的yii2来做演示了。

安装yii2

如果一切顺利的话,你不会遇到问题。 你也可以使用自己熟悉的框架或者项目。只要能启动就行

1
2
3
4
5
6
7
# composer安装yii2
composer create-project --prefer-dist yiisoft/yii2-app-basic yii2

cd yii2

# 运行Yii2
php yii serve

在浏览器访问http://localhost:8080/。看效果

开启Xdebug

怎么安装Xdebug?

简单一点,你可以这样安装。pecl install xdebug-2.9.8

查看php配置文件在哪里?

1
php --ini

这样可以看到你的PHP配置文件在什么目录下。

Xdebug配置如下

1
2
3
4
5
6
7
8
zend_extension="xdebug.so"
# 开启profiler
xdebug.profiler_enable = On
# 输出信息的目录
xdebug.profiler_output_dir = /var/tmp/
xdebug.profiler_output_name = cachegrind.out.%p
# 开启触发模式。不需要开启
xdebug.profiler_enable_trigger = Off

你可以运行 php --ri xdebug确认你是否已经成功配置

生成数据

确保已经配置好Xdebug之后。重启Yii2应用。生成一点数据。

查看你的/var/tmp目录下是否生成了数据。

1
ll /var/tmp

工具一:Webgrind

这个工具是PHP写的,就很简单,直接docker运行就可以了。

1
docker run --rm -v /var/tmp:/tmp -p 80:80 jokkedk/webgrind:latest

如果你不会使用Docker,可以使用工具二。

效果图1 效果图2

工具二:KCacheGrind

Mac系统直接运行brew install qcachegrind --with-graphviz即可安装。

如果你已经安装了graphviz。你也可以直接使用brew install qcachegrind

其他系统可以参考这个进行安装 参考地址

github仓库在这里 https://github.com/KDE/kcachegrind

效果图

总结

其实可以的话。我觉得使用KCacheGrind会强大很多。

这个要看自己去操作和体验。

参考文档