Phalcon で xhprof を使う
インストール
phalcon は入れてる前提.
また,自分は VirtualHost で /var/www 以下などにドメイン名でアプリを入れて ワイルドカードで直接そこを参照するようにする設定を行っているのでその前提でやる.
例えば下記のような設定とか.
<VirtualHost *:80>
ServerName exmple.com
ServerAlias *.example.com
Options -Indexes +FollowSymLinks
VirtualDocumentRoot "/var/www/%0/web"
</VirtualHost>
xhprof を入れる
apache 経由で参照できる場所に設置.ここでは前述のとおり /var/www 以下に置く. phpize がどうやって入るかはまかせた.
$ git clone https://github.com/facebook/xhprof xhprof.example.com
$ cd xhprof
$ phpize
$ make
$ sudo make install # 環境による
$ ln -s xhprof_html web # VirtualDocumentRoot が web 以下だから
phalcon プロジェクトに適用する
例えば phalcon/devtool で modules で作った場合の public/prof.php に下記のように書く.ココらへんは上で設置した xhprof の doc のページに書いてあるものを取ってきて貼り付けて動くようにしたもの.
<?php
use Phalcon\Mvc\Application;
error_reporting(E_ALL);
try {
$PROF_URL = 'http://xhprof.example.com/';
$XHPROF_ROOT = '/var/www/xhprof.example.com/';
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
/**
* Include services
*/
require __DIR__ . '/../config/services.php';
/**
* Handle the request
*/
$application = new Application();
/**
* Assign the DI
*/
$application->setDI($di);
/**
* Include modules
*/
require __DIR__ . '/../config/modules.php';
echo $application->handle()->getContent();
// xhprof
$xhprof_data = xhprof_disable();
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
$xhprof_runs = new XHProfRuns_Default();
$entryId = mt_rand();
$run_id = $xhprof_runs->save_run($xhprof_data, $entryId);
echo '<pre>'.htmlspecialchars("---------------\n".
"Assuming you have set up the http based UI for \n".
"XHProf at some address, you can view run at \n".
$PROF_URL."index.php?run=$run_id&source=$entryId\n".
"---------------\n").'</pre>';
} catch (Phalcon\Exception $e) {
echo $e->getMessage();
} catch (PDOException $e) {
echo $e->getMessage();
}
動作確認
上記のようにするとアクセスした時に最後に下記の様に表示される.
---------------
Assuming you have set up the http based UI for
XHProf at some address, you can view run at
http://xhprof.example.com/index.php?run=53837aa5adf00&source=1372228594
---------------
その URL にアクセスしに行くと下記の票に 時間やメモリ消費量などが表示される. 4ms 早いですね.
graphvis を入れてると下記のようにコールグラフも見られる.赤くなってるのは全体に対する割合が大きいからだけどそもそも実行時間とかが小さいのであんまり意味ない.
これでさらにパフォーマンス・チューニングがはかどりますね.
Author And Source
この問題について(Phalcon で xhprof を使う), 我々は、より多くの情報をここで見つけました https://qiita.com/nise_nabe/items/0d3bf7b36299514a04a7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .