xhprofを試してみた。php8.1でも動く。
導入
Dockerfileに追加
RUN git clone https://github.com/tideways/php-xhprof-extension.git \ && cd php-xhprof-extension \ && phpize \ && ./configure \ && make \ && make install
php.iniに追加
extension = tideways_xhprof.so xhprof.output_dir = /tmp/xhprof
phpinfoで確認
GUIツール
任意のphpファイルに処理を追記する
tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_MEMORY | TIDEWAYS_XHPROF_FLAGS_CPU); ~~~~ $xhprof_data = tideways_xhprof_disable(); include_once "/var/www/html/xhprof/xhprof_lib/utils/xhprof_lib.php"; include_once "/var/www/html/xhprof/xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_testing"); echo "http://localhost/xhprof/xhprof_html/index.php?run={$run_id}&source=xhprof_testing\n";
アクセスすると/tmp/xhprof
にファイルが生成される。
graphvizをインストールするとグラフでも見れる。
Laravelのpublic/index.php
にtideways_xhprof_enable
を追記しても動くがグラフ化すると重い。
参考: speakerdeck.com