PHPの最強プロファイルサービス、blackfire.ioを試す

Tags : PHP   Linux   Ubuntu   Laravel  

Laravel Forgeから、ワンタッチでインストール可能になったとツイートされていたので、調べてみましたら、すごいPHPのプロファイルサービスでした。

つまり、各メソッドが何回呼び出され、どの程度の実行時間を費やしているかをグラフ表示してくれます。実効効率を改善する場合に使用します。

まずは、https://blackfire.ioへアクセスし、ログインしてデモを見てみることをおすすめします。Symfonyのハローワールドのテストが確認できます。アカウントを作成せずとも、GitHubかG+のアカウントでログイン可能です。

Ubuntu系にインストールする

Ubuntu/DebianとRedHat/Fedora/CentOS、MaxOSには、パッケージが用意されており、簡単にインストールできます。私の普段使いのディレクトリビューションはopenSUSEです。こちらではインストールに成功していませんが、Mintでは簡単にインストールできました。(現在まだ、ベータ段階のサービスですので、変更はあると思います。適時、最新情報を参照してください。)(追記:openSUSEでもインストール出来ました。こちらの記事をご覧ください。)

最初にプロファイル結果をBlackfire.ioサイトへ送るためのサービスをインストールします。プロファイリングしたい環境へインストールする必要があります。Blackfireの用語ではagent(エージェント)と呼ばれています。

まず、Getting Startedへ行きましょう。Installationのセクションのタブで、OSを選択します。以降はそのインストラクションに従うだけです。

Debian/Ubuntu系の場合は、以下の通りです。curlが必要になりますので、未インストールの場合、まずsudo apt-get install curlでインストールしておきましょう。

curl -s https://packagecloud.io/gpg.key | sudo apt-key add -
echo "deb http://packages.blackfire.io/debian any main" | sudo tee /etc/apt/sources.list.d/blackfire.list
sudo apt-get update
sudo apt-get install blackfire-agent
blackfire-agent -register

ここで、端末からサーバーID(Server ID)とサーバートークン(Server Token)の入力が求められます。

ログイン状態のまま、Getting Startedページをご覧の皆さんは、そこに表示されている値を入力してください。未ログインの場合は、ログインした後に、このページを見れば表示されています。

Blackfireエージェントはサービス(サーバー)として動作します。そのため、-registerオプションで指定したIDとトークンを反映させるために、再起動します。

sudo /etc/init.d/blackfire-agent restart

または、少し簡単に:

sudo service blackfire-agent restart

これでエージェントのインストールはおしまいです。続いて、クライアントのインストールに移ります。

クライアントは、プロファイルを起動するためのコマンドラインツールです。

blackfire configure

これにより、クライアントID(Client ID)とクライアントトークン(Client Token)の入力が求められます。サーバーIDとトークンではありません。お間違えなく。

コマンド実行時に示されるURLでは、表示されません。https://blackfire.io/account/credentialsページで確認してください。ログイン状態であれば、下の方に2つの値が表示されます。

最後に、プロファイラー本体のProbeをインストールします。PHPの拡張モジュールです。PHPの拡張もジュールですので、同じような動作をするxDebugとXHProfが有効になっていると、コンフリクトを起こすだろうと警告されています。ですから、もし有効になっている場合は、無効にしておきましょう。

インストール自体は簡単です。

sudo apt-get install blackfire-php

PHPの拡張を追加したので、必要に応じWebサーバー(Apacheなど)か、PHP-FPMを起動するように指示が表示されます。自分の環境に合わせ、実行してください。

Google Chrome拡張

プロファイルはURLを指定してコマンドラインから実行することができます。(参照:https://blackfire.io/doc/web-services)コマンドラインではWebページだけではなく、APIでも実行できます。

ブラウザで表示できるWebページでは、ボタンクリックでプロファイル結果を表示できるようにできます。これはChromeの拡張として用意されています。コンパニオン(Companion)と言う名前がつけられています。

Chromeで、https://blackfire.io/doc/web-pageページを表示すると、この拡張が未インストールの場合、Install the Companionボタンが表示されます。それをクリックするとインストールされます。ログイン状態でボタンをクリックしてください。未ログインの場合はインストールに失敗します。

これで、実行できます。プロファイルを取りたいページを表示し、Blackfireのボタンをクリックすると、どのスロットに保存するかを指定し、プロファイルを実行し、結果を確認してください。

ちなみに、フレッシュインストールしたLaravelのプロファイルを取りましたら、当方の環境では全体でも42ms程度でした。