macな開発環境にxhguiを導入する

January 3, 2013,
tags: php xhgui


このエントリーをはてなブックマークに追加

こんなツイートを見つけてしまったので早速試してみる事にしました!!!

とりあえずまずはxhprofを入れる。ついでにmongoもwww

$ brew install php53-xhprof
$ brew install mongodb
$ brew install php53-mongo

mongoDBが起動しているか確認する。

$ mongostat
couldn't connect to [127.0.0.1] couldn't connect to server 127.0.0.1

起動していないので起動する。

$ mongod -dbpath /usr/local/var/mongodb/ --logpath /usr/local/var/log/mongodb/mongodb.log &

続いてxhguiをcloneしてくる、その後cacheディレクトリのパーミッションを777にしとく

$ cd /usr/local/share
$ git clone https://github.com/preinheimer/xhgui.git
$ chmod 777 xhgui/web/cache

apacheにxhguiの設定をする

$ vim /usr/local/etc/apache2/extra/httd-vhost.conf

設定例:https://gist.github.com/663cdbfd2efcdc9a8cfc

続いてhostsも書き換えとく

$ sudo vim /etc/hosts

# 以下を一番下に追記
127.0.0.1       xhgui.local
::1             xhgui.local

これで一応うごくようになったとおもうので、ブラウザで

http://xhgui.local

にアクセスして確認してみましょう。

何回かリロードするとこんな感じに表示されているかと思います。

デフォルトの状態だとxhgui.localにアクセスする度にxhprofのデータ記録されてしまい、非常にうざいです。
なので、記録されないようにphpファイルを若干修正します。

$ vim /usr/local/share/xhgui/web/webroot/index.php

以下のように書き換え(コメントアウト)してください。

<?php
require dirname(__DIR__) . '/app/bootstrap.php';

//xhprof_enable(XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);

$m = new Mongo();
$db = $m->xhprof;
$collection = $db->results;


//Let's get results from the database
$res = $collection->find()->sort(array("meta.SERVER.REQUEST_TIME" => -1))->limit(DISPLAY_LIMIT);
$template = load_template('runs/list.twig');
echo $template->render(array(
    'runs' => $res
));
flush();

//Store results


function _xhGetMeta()
{
    $meta = array(
        'url' => $_SERVER['REQUEST_URI'],
        'SERVER' => $_SERVER,
        'get' => $_GET,
        'env' => $_ENV,
        'simple_url' => simpleUrl($_SERVER['REQUEST_URI']),
    );  
    return $meta;
}
//$profile = xhprof_disable();
//$data['meta'] = _xhGetMeta();
//$data['profile'] = $profile;

//$collection->insert($data);
//$m = new Mongo();
//$db = $m->xhprof;
//$collection = $db->results;

これで後は自分でプロファイルとりたい場所に適当に/usr/local/share/xhgui/external/header.phpをrequireしてあげれば動くと思います。

comments powered by Disqus