Laravel4、組み込みプロファイラー

タグ: Laravel4  

Laravel3ではデフォルトで入っていたプロファイラーですが、Laravel4からはコンポーサーのパッケージとして、自分でインストールします。

既に多くのプロファイラーが用意されています。いくつかを試しましたが、当方の環境では動かないものも多く、開発者の力量が現れています。

その中でも、動作の安定度と機能から、一つ紹介します。

juy/profiler

インストール方法

通常のLaravel用パッケージのインストール手順と同じです。

まず、composer.jsonのrequireセクションに、"juy/profiler" : "dev-master"を付け加え、composer updateを実行するか、composer require juy/profiler:dev-masterを実行してインストールします。

プロファイラーは、開発環境のみで使用するものですので、"require-dev"に付け加えるほうが、良いでしょう。これには多少の手間が必要です。(後述)

続いて、サービスプロバイダーの登録です。app/config/app.phpを開き、以下のプロバイダーを登録してください。

'Juy\Profiler\Providers\ProfilerServiceProvider',

次に、クラスエイリアスを登録します。同じく、app/config/app.phpを開き、追加してください。

'Profiler'      => 'Juy\Profiler\Facades\Profiler',

このパッケージでは、publicへリソースを移す必要が無いようです。多分、Laravel3と同じように、出力ページの最後に、プロファイラーに必要なコードを追加しているからでしょう。そのため、artisan asset:publishを実行する必要は無いようです。

次に、設定ファイルをapp下にコピーします。

php artisan config:publish juy/profiler

これにより設定ファイルが、app/config/packages/juy/profiler/config.phpにコピーされます。

この設定ファイルには、'profiler' => NULLが設定されています。プロファイラーの有効・無効を切り替えます。NULL値の場合は、app.phpのdebugキーの指定により、有効・無効が切り替わります。そのため、NULLのままにしておくことをおすすめします。

この時点で、プロファイラーは動作しています。適当なページにアクセスすれば、下部にパネルが表示されます。

機能

Laravel3のプロファイラーとほぼ同等な機能を持っています。

タイマーの開始:

Profiler::start('my timer key');

タイマーの終了:

Profiler::end('my timer key');

ログの表示:

Logクラスを利用したログをパネルへ表示します。

Log::debug('Your message here');
Log::info('Your message here');
Log::notice('Your message here');
Log::warning('Your message here');
Log::error('Your message here');
Log::critical('Your message here');
Log::alert('Your message here');
Log::emergency('Your message here');

プロファイラー使用上の注意

多くのプロファイラーでは、今回のセッションの情報を出力します。

つまり、エラーなどでリダイレクトする場合、リダイレクト前の情報は見ることができません。

初心者の場合、情報が表示されずに悩む事になるでしょう。リダイレクトすると別セッションになることを記憶にとどめておきましょう。

require-dev使用時

composer.jsonのrequire-devセクションに、このパッケージを登録した場合、本番環境でcomposer update --no-devを実行すると、パッケージ自身が消去されます。

パッケージが削除されてしまうため、composer updateの後に起動されるコマンド実行が、サービスプロバイダーが見つからず、エラーになってしまいます。もちろん、Webページにアクセスしても、例外ページが表示されるか、エラーページが表示されることになります。

面倒であれば、requireセクションに登録し、本番環境ではプロファイラーが動作しないように設定ましょう。パッケージの設定ファイルでprofilerキーがNULLであれば、debugキーをfalseに設定することで、同時にプロファイラーも動作しなくなります。

ただ、セキュリティーを向上させるため、プロファイラー自身はやはりアンインストールしたい場合は、composer update --no-devを実行する前に、サービスプロバーダーとクラスエイリアスの登録を削除しておくか、もしくは環境による設定ファイルの使い分けを利用し、production環境用に、require-devセクションに指定したパッケージの指定を含まない、app.phpを用意しておく必要があります。