推薦閱讀
- Tideways、xhprof 和 xhgui 打造 PHP 非侵入式監控平臺
- 超全的設計模式簡介(45種)
- design-patterns-for-humans 中文版
- MongoDB 資源、庫、工具、應用程式精選列表中文版
- 有哪些鮮為人知,但是很有意思的網站?
- 一份攻城獅筆記
- 每天蒐集 Github 上優秀的專案
- 一些有趣的民間故事
- 超好用的谷歌瀏覽器、Sublime Text、Phpstorm、油猴外掛合集
環境準備
安裝之前確保已經正確安裝了以下軟體
- PHP
- Nginx
- Mongodb
安裝 PHP mongodb 擴充套件
$ sudo pecl install mongodb
PHP 配置檔案中新增
[mongodb]
extension=mongodb.so
安裝 PHP tideaways 擴充套件
常規編譯安裝
$ git clone https://github.com/tideways/php-xhprof-extension.git
$ cd /path/php-xhprof-extension
$ phpize
$ ./configure
$ make
$ sudo make install
PHP 配置檔案中新增
[tideways]
extension=tideways_xhprof.so
; 不需要自動載入,在程式中控制就行
tideways.auto_prepend_library=0
; 頻率設定為100,在程式呼叫時可以修改
tideways.sample_rate=100
安裝 xhgui-branch(xhgui 的漢化版)
$ git clone https://github.com/laynefyc/xhgui-branch.git
$ cd xhgui-branch
$ php install.php
修改 xhgui-branch 配置檔案
<?php
return array(
...
'extension' => 'tideways_xhprof',
...
'save.handler' => 'mongodb',
'db.host' => 'mongodb://127.0.0.1:27017',
'db.db' => 'xhprof',
...
);
啟動 mongodb 並設定 xhgui 索引,命令如下:
$ mongo
> use xhprof
> db.results.ensureIndex( { 'meta.SERVER.REQUEST_TIME' : -1 } )
> db.results.ensureIndex( { 'profile.main().wt' : -1 } )
> db.results.ensureIndex( { 'profile.main().mu' : -1 } )
> db.results.ensureIndex( { 'profile.main().cpu' : -1 } )
> db.results.ensureIndex( { 'meta.url' : 1 } )
xhgui 本地虛擬主機配置參考
server {
listen 80;
server_name xhgui.test;
root /Users/yaozm/Documents/wwwroot/xhgui-branch/webroot;
# access_log /usr/local/var/log/nginx/access.log;
error_log /usr/local/var/log/nginx/error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
index index.php index.html index.htm;
}
}
針對要分析的站點進行設定,直接在要分析站點的 nginx 配置中增加以下項,然後使配置生效就可以了。
$ fastcgi_param PHP_VALUE "auto_prepend_file=/path/xhgui-branch/external/header.php";
參考配置
server {
listen 80;
server_name laravel.test;
root /Users/yaozm/Documents/wwwroot/laravel/public;
# access_log /usr/local/var/log/nginx/access.log;
error_log /usr/local/var/log/nginx/error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
index index.php index.html index.htm;
}
# 新增 PHP_VALUE,告訴 PHP 程式在執行前要呼叫的服務
fastcgi_param PHP_VALUE "auto_prepend_file=/path/wwwroot/xhgui-branch/external/header.php";
}
或者也可以在修改 PHP 配置檔案,告訴 PHP 程式在執行前要呼叫的服務
; Automatically add files before PHP document.
; http://php.net/auto-prepend-file
auto_prepend_file = "/path/wwwroot/xhgui-branch/external/header.php"
參考連結
- https://github.com/phacility/xhprof
- https://github.com/perftools/xhgui
- https://github.com/tideways/php-xhprof-ext...
- https://github.com/laynefyc/xhgui-branch
- https://blog.it2048.cn/article-tideways-xh...
- https://zhuanlan.zhihu.com/p/30832165
No practice, no gain in one's wit.
我的 Gitub