Xdebug によるプロファイリング
対話型デバッグに加えて、IDE と Xdebug(英語) の統合により、プロファイリングもサポートされます。 PhpStorm は、Xdebug によって生成されたプロファイリングスナップショットを視覚的に表示し、PHP アプリケーションが実行時間やメモリをどのように使用しているかを調査するのに役立ちます。
Xdebug を使用したプロファイリングのセットアップ
Xdebug をセットアップする
php.ini で Xdebug プロファイラーを構成する
エディターでアクティブな php.ini ファイルを開きます:
設定 ダイアログ (Ctrl+Alt+S) で、 PHP をクリックします。
表示される PHP ページで、 CLI インタープリター フィールドの横にある
をクリックします。
開いている CLI インタープリター ダイアログで、 構成ファイル 読み取り専用フィールドにアクティブな php.ini ファイルへのパスが表示されます。 エディターで開く をクリックします。
次のいずれかの方法で Xdebug プロファイラモードを有効にします。
プロファイラーを永続的に有効にするには、
xdebug.mode(英語) (Xdebug 3 の場合) またはxdebug.profiler_enable(英語) (Xdebug 2 の場合) 設定をprofileに設定します。xdebug.mode = profilexdebug.profiler_enable = 1XDEBUG_PROFILE Cookie または GET/POST パラメーターを使用してブラウザーからプロファイラーをトリガーできるようにするには、使用する Xdebug バージョンに応じて次の設定を行います。
xdebug.mode = profile xdebug.start_with_request = triggerxdebug.profiler_enable = 0 xdebug.profiler_enable_trigger = 1
プロファイリングスナップショットを保存する場所を指定します。
xdebug.output_dir(英語) (Xdebug 3) またはxdebug.profiler_output_dir(英語) (Xdebug 2) 設定を追加し、その値としてディレクトリへのパスを指定します。xdebug.output_dir = <path to output folder>xdebug.profiler_output_dir = <path to output folder>xdebug.profiler_output_name(英語) 設定を追加し、スナップショットを保存するファイルの名前をその値として指定します。デフォルト値は
cachegrind.out.%pで、%pは名前形式指定子です。 デフォルト値を使用するか、 サポートされている形式指定子(英語)に従ってカスタムファイル形式を定義します。 名前は常に cachegrind.out である必要があることに注意してください。xdebug.profiler_output_name = cachegrind.out.%p
ブラウザーからプロファイラーの切り替えを構成する
ブラウザーからプロファイラーを有効にするには、次のいずれかを実行します。
Xdebug のドキュメント(英語)に従って、
XDEBUG_PROFILECookie 変数または?XDEBUG_PROFILE=1URL パラメーターを使用します。Xdebug Helper ブラウザー拡張機能を使用します (たとえば、Chrome の場合は JetBrains による Xdebug ヘルパー (英語))。

Xdebug デバッグセッションを開始してプロファイリングデータを収集する
次のいずれかを実行します:
アプリケーション全体のデバッグを開始するには、タイプ PHP Web ページ のデバッグ構成を作成し、
をクリックしてデバッグを開始します。
詳細は PHP Web ページのデバッグ構成でデバッグする を参照してください。
特定の PHP HTTP リクエストをデバッグするには、タイプ PHP HTTP リクエスト のデバッグ構成を定義し、
をクリックしてデバッグを開始します。
詳細は PHP HTTP リクエストをデバッグする を参照してください。
ゼロ設定のデバッグセッションを開始するには、次のようにします。
PhpStorm のツールバーまたはステータスバーで PHP のデバッグ接続を聞く開始 ボタン
を切り替え、
に変更します。 その後、PhpStorm は現在のプロジェクトで使用されているデバッグエンジンのポートのリッスンを開始します。 デバッグポートは、 設定 ダイアログ (Ctrl+Alt+S) の PHP | Debugページで PhpStorm レベルで設定されます。
ブラウザーでアプリケーションの開始ページを開き、 デバッガーを起動する ブックマークを選択してブラウザーからデバッグエンジンを有効にし、現在のページ(アプリケーションの開始ページ)を再読み込みしてから PhpStorm に戻ります。
PHP CLI スクリプトのプロファイル
PhpStorm で PHP CLI スクリプトのプロファイラースナップショットを、 php.ini で Xdebug をプロファイリングモードに設定することや Xdebug デバッグセッションを開始することなく生成できます。
PHP スクリプトのプロファイラースナップショットを生成するには、次の手順を実行します。
PhpStorm で Xdebug を設定します。
PHP スクリプトファイルのカスタム実行構成を作成し、その中に次の インタープリターオプション を指定します。
-dxdebug.mode=profile -dxdebug.start_with_request=yes -dxdebug.output_dir=/Users/{username}/{path-to-project-directory} -dxdebug.profiler_output_name=cachegrind.out.%p
「実行 / デバッグ構成 」ダイアログから「実行 」をクリックするか、 アプリケーション構成を実行する任意の方法を使用して、作成した実行構成を起動します。
このような実行構成を起動するたびに、PhpStorm は
cachegrind.out.%pプロファイラースナップショットを生成し、指定した出力フォルダーに保存します。
Xdebug プロファイリングデータの分析
プロファイラーによって蓄積されたデータを取得する
メインメニューで へ移動します。
開いた Xdebug プロファイラスナップショットを選択 ダイアログで、 プロファイリングデータが保存されているフォルダーとファイルを選択します。
PhpStorm は、収集したプロファイリングデータを、選択したプロファイラ出力ファイル名の別のエディタータブに表示します。

一度に複数のスナップショットを選択して開くことができます。 この場合、PhpStorm は選択したすべてのスナップショットからプロファイリングデータを集計し、平均した結果を単一のタブに表示します。
プロファイリングデータを調べる
タブを切り替えてプロファイリングデータを分析します。 タブ内の特定の機能をすばやく見つけるには、 スピード検索を使用します。
実行統計: このタブを使用して、呼び出されたすべての関数の 実行メトリクスに関する概要情報を調べます。
呼び出しツリー: このタブを使用して、呼び出されたすべての関数の実行パスを調べます。
呼び出し先: このタブを使用して、 呼び出しツリー タブで選択した特定の関数の実行パスを調べます。
呼び出し元: このタブを使用して、 呼び出しツリー タブで選択した特定の関数を呼び出す可能性のあるすべてのパスを調べます。
メトリクス名 | 説明 |
|---|---|
時間 | 選択した関数と、この関数から呼び出されるすべての関数に費やした時間 (パーセント)。 |
自身時間 | 選択した関数内で消費された経過時間(パーセント表示)で、この関数から再度呼び出される関数に費やした時間は除外されます。 |
メモリ (B) | 選択した関数およびこの関数から呼び出されるすべての関数によって消費されるメモリ量 (バイト単位)。 |
自分の記憶 (B) | 選択した関数が消費したメモリ量(バイト単位)で、この関数から呼び出される関数によるメモリ消費量を除きます。 |
呼び出し | 選択した関数が呼び出された回数。 |