前期準備
安裝 tideways 擴充套件
詳情見 github.com/tideways/php-xhprof-ext...
生成 PHP 執行情況資料是依賴這個擴充套件拉取 xhgui 專案,主要展示上面產生的資料
github.com/perftools/xhgui
這個專案依賴 mongodb ,所以還需要安裝 mongodb 和對應的 php 擴充套件
配置
有兩種配置方法,直接使用 xhgui 的 header.php 檔案比較簡單,配置使用不用修改程式碼,但是 cli 模式的程式碼不能使用這種方法
可以直接引入 xhgui 的 header 檔案
在 nginx 或 apache 配置中加入auto_prepend_file=/var/www/xhgui/external/header.php
引入後直接訪問目標 url ,然後檢視 xhgui 即可
手動配置
在需要分析的程式碼前新增
tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_CPU | TIDEWAYS_XHPROF_FLAGS_MEMORY | TIDEWAYS_XHPROF_FLAGS_NO_BUILTINS);
文件上是不使用引數的,不使用引數的分析資料中只有 ct wt 資料,沒有記憶體情況,xhgui 顯示的時候會報錯,所以需要新增對應的引數配置
在執行程式碼後新增
$xhprofData['profile'] = tideways_xhprof_disable(); $time = time(); $requestTs = array('sec' => $time, 'usec' => 0); $requestTsMicro = array('sec' => 0, 'usec' => 0); $xhprofData['meta'] = array( 'url' => "", 'SERVER' => $_SERVER, 'get' => $_GET, 'env' => $_ENV, 'simple_url' => "", 'request_ts' => $requestTs, 'request_ts_micro' => $requestTsMicro, 'request_date' => date('Y-m-d', $time), ); file_put_contents( './myapplication.json', json_encode($xhprofData)."\r\n", FILE_APPEND );
按行寫入分析資料。
因為要匯入到 xhgui 中,所以需要按照 xhgui 的資料格式來匯入資料,不然 xhgui 無法正常顯示,上面這個格式是 xhgui 格式來拼裝的資料
將上面生成的 json 檔案匯入到 xhgui 資料庫中
透過執行 xhgui 的 import.php 來進行匯入即可,執行匯入之前需要配置 xhgui 的 mongo
php /var/www/xhgui/external/import.php -f ./myapplication.xhprof
現在就可以去 xhgui 檢視資料了
本作品採用《CC 協議》,轉載必須註明作者和本文連結