pecl

EC-CUBEにXHProfを導入する

pecl

EC-CUBEからは少し離れそうなのでやったことを忘れないように色々メモを残しておこうと思います

第一弾はEC-CUBEをチューニングする為にやったXHProfの導入です

XHProfのインストール

ファイルの取得

PECL :: Package :: xhprof
peclで提供されているけどpeclインストールだとインストールできないので最新を上記から取得する
~~~
wget http://pecl.php.net/get/xhprof-0.9.2.tgz
~~~

解凍

~~~
tar zxvf xhprof-0.9.2.tgz
~~~

インストール

~~~
cd xhprof-0.9.2/extension/
phpize
make
make install
~~~

Installing shared extensions: /usr/lib64/php/modules/

↑にxdebug.soが出来ました

設定ファイルの追加

php.iniに追記でもいいけどファイルを分ける方がなにかとわかりやすいと思う

vim /etc/php.d/xhprof.ini
~~~
[xhprof]
extension=xhprof.so
xhprof.output_dir=/tmp
~~~

moduleを有効化する

~~~
service httpd restart
php -m
~~~
xhprofがPHP Modulesに含まれていればOK

graphvizのインストール

xdebugtoolkitをちょっと使ってみようとしたらとてつもなく苦労した! | のぶろぐでもやりましたがグラフを表示するためにインストールする
~~~
yum install –enablerepo=epel graphviz graphviz-gd
~~~
epel が入ってないとダメなのが難点。。

epelの追加

~~~
wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm
~~~

vim /etc/yum.repos.d/epel.repo
~~~
enabled=0
~~~

ここまでで必要なものはそろったので次に表示をさせます

プロファイル結果閲覧用 Web インターフェースの設置

xhprof-0.9.2内にあるxhprof_htmlとxhprof_libを使います
~~~
cp -a xhprof_* /var/www/html/eccube/html/
~~~
とりあえずEC-CUBE内に置きましたがドキュメントルートに置ければどこでも構わないです

導入する

vim /var/www/html/eccube/data/require_base.php
save_run($xhprof_data, $XHPROF_SOURCE_NAME);

//ここを踏むと結果を表示する
echo “xhprof Result\n”;
}

if (!defined(‘XHPROF_SATRT’)){
xhprof_enable();
define(‘XHPROF_SATRT’, ‘true’);
}
register_shutdown_function(‘__xhprof_finish’);
}
~~~
これで完了、EC-CUBEのページをどこでも適当に表示してみてください。
一番下にxhprof Resultというリンクが表示されるはずです、あとはクリックしてみてください(‘¬’*)

導入する2

require_baseをいじるのはちょっと・・・って場合はauto_prepend_fileを使います

vim /var/www/html/eccube/html/.htaccess
~~~
php_value auto_prepend_file /var/www/html/eccube/html/prepend.php
~~~

vim /var/www/html/eccube/html/prepend.php
~~~
save_run($xhprof_data, $XHPROF_SOURCE_NAME);

//ここを踏むと結果を表示する
echo “xhprof Result\n”;
}

xhprof_enable();
register_shutdown_function(‘__xhprof_finish’);
}
~~~
ちょっとだけ違うのは定数が使えないのでそこのパスを指定してあげるぐらいです

以上、導入は大変ですが、やってみる価値はあるxhprofの導入でした