参考文章:Swoole整合PHP性能分析平台: Tideways+Xhgui
根据以上文章,作为修改和补充
本文章是这文章的补充和延伸:[Docker] 用PHP7.4+Swoole+sdebug打开PHP的二次元世界
安装tideways扩展
!!!FBI WARNING!!!
git clone https://github.com/tideways/php-xhprof-extension.git
cd php-xhprof-extension
phpize
./configure --with-php-config=/usr/local/php7/bin/php-config
make && make install
编译完成后在php.ini中加入
extension=tideways_xhprof.so
查看是否安装成功
php --ri tideways_xhprof
成功会输出以下内容
安装mongodb扩展
其实非一定要依赖这个扩展的,但下面介绍的laynefyc/php-monitor扩展,会检测mongodb,所以也需要装上这个
wget https://pecl.php.net/get/mongodb-1.7.4.tgz
tar -zxvf mongodb-1.7.4.tgz
cd mongodb-1.7.4
phpize
./configure
make && make install
编译完成后在php.ini中加入
extension=mongodb.so
查看是否安装成功
php --ri mongodb
成功会输出以下内容
安装php-monitor
介绍: https://github.com/laynefyc/php-monitor/blob/master/README-zh_CN.md
git clone https://github.com/laynefyc/php-monitor.git
cd php-monitor
composer update --ignore-platform-reqs
注意,这里跟官方有些差异的修改。因为我们上面安装的是tideways_xhprof作性能分析的,所以它的配置需要修改一下
src/config/config.php
原来
'extension' => 'tideways',
修改为
'extension' => 'tideways_xhprof',
还有一个一定要注意的,官方也有提到
就是说,你要运行这个php-monitor,就一定不能有xdebug, sdebug(swoole版的xdebug) 等等的性能分析扩展
接着就可以让php-monitor跑在nginx下了
nginx配置参考
server
{
listen 80;
server_name php-monitor.ppwang.mine;
index index.php index.html index.htm default.html default.htm default.php;
root /System/Volumes/Data/Software/Project/pipi/php-monitor/public;
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
location ~ \.php$ {
# fastcgi_pass php73fpm:9730;
fastcgi_pass php74fpmdev:9740;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
client_max_body_size 1000M;
}
access_log /var/log/nginx/access/php-monitor.ppwang.mine.log;
error_log /var/log/nginx/error/php-monitor.ppwang.mine.log;
}
Laravel下代码修改
app/Providers/EventServiceProvider.php
public function boot()
{
parent::boot();
// 其它代码
\Event::listen('laravels.received_request', function (\Illuminate\Http\Request $req, $app) {
// 这个需要根据你自己的文件所在而定的
require '/System/Volumes/Data/Software/Project/pipi/php-monitor/src/autoPrepend.php';
});
\Event::listen('laravels.generated_response', function (\Illuminate\Http\Request $req, \Symfony\Component\HttpFoundation\Response $rsp, $app) {
\pm\common\PMonitor::shutdown($req->route()->getName(), $req->request->get('remote_ip'), 'TCP');
});
}
跑一次请求laravel,就可以在php-monitor看到数据了
来源:oschina
链接:https://my.oschina.net/u/4275057/blog/4300532