PhpStorm 2024.3 ヘルプ

Xdebug によるプロファイリング

対話型デバッグに加えて、IDE と Xdebug(英語) の統合により、プロファイリングもサポートされます。PhpStorm は、Xdebug によって生成されたプロファイリングスナップショットを視覚的に表現し、PHP アプリケーションが実行時間とメモリをどのように使用するかを調べるのに役立ちます。

Xdebug を使用したプロファイリングのセットアップ

Xdebug をセットアップする

  1. Xdebug ツールをダウンロードしてインストールしてください

  2. Xdebug と PHP エンジンの統合

  3. PhpStorm と Xdebug を統合します

php.ini で Xdebug プロファイラーを構成する

  1. エディターでアクティブな php.ini ファイルを開きます:

    1. 設定ダイアログ (Ctrl+Alt+S) で、PHP をクリックします。

    2. 表示される PHP ページで、CLI インタープリターフィールドの横にある the Browse button をクリックします。

    3. 開いている CLI インタープリターダイアログで、構成ファイル読み取り専用フィールドにアクティブな php.ini ファイルへのパスが表示されます。エディターで開くをクリックします。

  2. 次のいずれかの方法で Xdebug プロファイラモードを有効にします。

    • プロファイラーを永続的に有効にするには、 xdebug.mode (英語) (Xdebug 3 の場合) または xdebug.profiler_enable (英語) (Xdebug 2 の場合) 設定を profile に設定します。

      xdebug.mode = profile
      xdebug.profiler_enable = 1
    • XDEBUG_PROFILE Cookie または GET/POST パラメーターを使用してブラウザーからプロファイラーをトリガーできるようにするには、使用する Xdebug バージョンに応じて次の設定を行います。

      xdebug.mode = profile xdebug.start_with_request = trigger
      xdebug.profiler_enable = 0 xdebug.profiler_enable_trigger = 1
  3. プロファイリングスナップショットを保存する場所を指定します。

    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>
    2. xdebug.profiler_output_name (英語) 設定を追加し、スナップショットを保存するファイルの名前をその値として指定します。

      デフォルト値は cachegrind.out.%p で、%p は名前形式指定子です。デフォルト値を使用するか、サポートされている形式指定子(英語)に従ってカスタムファイル形式を定義します。名前は常に cachegrind.out である必要があることに注意してください。

      xdebug.profiler_output_name = cachegrind.out.%p

ブラウザーからプロファイラーの切り替えを構成する

XDEBUG_PROFILE cookie または GET/POST パラメーターを指定するには、以下のいずれかを実行します。

  • 手動で値を指定します(英語)

  • ブックマークレットを生成してデバッガーを切り替えます。これらのブックマークレットは、ブラウザーのツールバーに表示されます。デバッガーのクッキーを制御し、デバッガーを有効または無効にします。

    1. ブラウザーの種類に応じて、次のいずれかを実行して、ブラウザーでブックマークツールバーを有効にします。

      • Firefox では、表示 | ツールバー | ブックマークツールバーを選択します。

      • Chrome では、ブックマーク | ブックマークバーを表示を選択します。

    2. Xdebug および Zend デバッガーのブックマークレットジェネレーターページを開き、デバッグエンジンの設定を確認して、生成をクリックします。リストされたデバッグ関連アクションのブックマークが生成されます。

    3. 生成されたリンクをブラウザーのブックマークツールバーにドラッグします。

Xdebug デバッグセッションを開始してプロファイリングデータを収集する

以下のいずれか 1 つを実行します:

  • アプリケーション全体のデバッグを開始するには、タイプ PHP Web ページのデバッグ構成を作成し、the Debug button をクリックしてデバッグを開始します。

    詳細は、PHP Web ページのデバッグ構成でデバッグするを参照してください。

  • 特定の PHP HTTP リクエストをデバッグするには、タイプ PHP HTTP リクエストのデバッグ構成を定義し、the Debug button をクリックしてデバッグを開始します。

    詳細は、PHP HTTP リクエストをデバッグするを参照してください。

  • ゼロ設定のデバッグセッションを開始するには、次のようにします。

    1. PhpStorm ツールバーまたはステータスバーの PHP のデバッグ接続を聞く開始ボタン start listening php debug connections を切り替えて、stop listening php debug connections に変更します。その後、PhpStorm は現在のプロジェクトで使用されているデバッグエンジンのポートのリッスンを開始します。デバッグポートは、設定ダイアログ (Ctrl+Alt+S) の PHP | デバッグページの PhpStorm レベルで設定されます。

    2. ブラウザーでアプリケーションの開始ページを開き、デバッガーを起動するブックマークを選択してブラウザーからデバッグエンジンをアクティブにし、現在のページ(アプリケーションの開始ページ)を再ロードしてから PhpStorm に戻ります。

PHP CLI スクリプトのプロファイル

php.ini で Xdebug をプロファイルモードに設定するを使用せずに、Xdebug デバッグセッションを開始せずに、PhpStorm で PHP CLI スクリプトのプロファイラースナップショットを生成できます。

PHP スクリプトのプロファイラースナップショットを生成するには、次の手順を実行します。

  1. PhpStorm の Xdebug をセットアップします

  2. 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
    Profile a PHP CLI script
  3. 実行 / デバッグ構成」ダイアログから「実行」をクリックするか、アプリケーション構成を実行する任意の方法を使用して、作成した実行構成を起動します。

    このような実行構成を起動するたびに、PhpStorm は cachegrind.out.%p プロファイラースナップショットを生成し、指定された出力フォルダーに保存します。

Xdebug プロファイリングデータの分析

プロファイラーによって蓄積されたデータを取得する

  1. メインメニューで、ツール | Xdebug プロファイラーのスナップショットを分析に移動します。

  2. 開いた Xdebug プロファイラスナップショットを選択ダイアログで、プロファイリングデータが保存されているフォルダーとファイルを選択します。

    PhpStorm は、収集したプロファイリングデータを、別のエディタータブに、選択したプロファイラ出力ファイルの名前とともに表示します。

    Open profiler snapshot in IDE

    一度に複数のスナップショットを選択して開くことができます。この場合、PhpStorm は選択したすべてのスナップショットからプロファイリングデータを集計し、平均した結果を 1 つのタブに表示します。

プロファイリングデータを調べる

タブを切り替えてプロファイリングデータを分析します。タブ内の特定の機能をすばやく見つけるには、スピード検索を使用します。

  • 実行統計 : このタブを使用して、呼び出されたすべての関数の実行メトリクスに関する概要情報を調べます。

  • 呼び出しツリー : このタブを使用して、呼び出されたすべての関数の実行パスを調べます。

  • 呼び出し先 : このタブを使用して、呼び出しツリータブで選択した特定の関数の実行パスを調べます。

  • 呼び出し元 : このタブを使用して、呼び出しツリータブで選択した特定の関数を呼び出す可能性のあるすべてのパスを調べます。

メトリクス名

説明

時間

選択した関数と、この関数から呼び出されるすべての関数に費やした時間 (パーセント)。

自身時間

選択した関数に費やされた時間 (パーセント)。この関数から呼び出された関数に費やされた時間を割り引いたもの。

メモリ (B)

選択した関数およびこの関数から呼び出されるすべての関数によって消費されるメモリ量 (バイト単位)。

自分の記憶 (B)

選択した関数によって消費されるメモリ量 (バイト単位)。この関数から呼び出される関数によって消費されるメモリ量を差し引きます。

呼び出し

選択した関数が呼び出された回数。

関連ページ:

PHP デバッグセッションを開始する

デバッグを開始する前に、Web アプリケーションまたは PHP CLI スクリプトが実行されるマシンにデバッグエンジンがインストールされ、適切に構成されていることを確認してください。PhpStorm は、最も人気のある 2 つのツール、Xdebug と Zend デバッガーによるデバッグをサポートしています。これらのツールは、互いにブロックし合うため、同時に使用することはできません。この問題を回避するには、Xdebug を構成するおよび Zend デバッガーの構成に従って、関連する PHP インタープ...

Xdebug を構成する

Xdebug をダウンロード PHP バージョンと互換性のある Xdebug 拡張をダウンロードし、Xdebug インストールガイドの説明に従ってインストールします。事前構成された AMP (Apache、MySQL、PHP) パッケージを使用している場合は、Xdebug 拡張機能がすでにインストールされている可能性があります。パッケージに固有の手順を参照してください。Xdebug と PHP エンジンの統合アクティブな php.ini ファイルをエディターで開きます。デバッグエンジンが PhpStor...

PHP HTTP リクエストをデバッグする

アプリケーション全体をデバッグするだけでなく、別の HTTP リクエストをデバッグすることもできます。これは、実際に多くの手順でアクセスされている特定のページに興味がある場合に役立ちますが、このためにこのページをデバッグの開始ページとして指定することはできません。このページには特定のデータが含まれています。PhpStorm で PHP HTTP リクエストをデバッグするには、次の方法を使用できます。コードエディターで HTTP クライアントを介してリクエストを作成およびデバッグします。これは推奨さ...

デバッグ

このページは、PHP プラグインが有効な場合にのみ使用できます。PHP プラグインは PhpStorm にバンドルされており、デフォルトで有効になります。プラグインが無効になっている場合は、プラグインのマッピングの説明に従ってで有効にします。このページを使用して、Xdebug と Zend デバッガーの動作を設定します。事前構成この領域には、デバッガーのインストール、デバッガーのクッキーを制御してデバッグセッションを開始 / 停止するを実行するブックマークレットの生成、およびゼロコンフィギュレーショ...

コードの実行 / デバッグ

簡単な方法:プログラムにパラメーターを渡さず、プログラムの開始前にアクションを実行する必要がない場合は、一時的な構成を使用してエディターまたはツールバーからプログラムを実行 / デバッグできます。現在のファイルを実行するエディターでファイルを開き、次のいずれかのオプションを使用して実行します。エディター領域の任意の場所を右クリックしてコンテキストメニューを開き、そこから実行および <script name> を選択します。エディターの上にあるツールバーで、ドロップダウンメニューから現在...

ツールウィンドウのスピード検索

スピード検索は、ツールウィンドウ内の項目 (プロジェクトツールウィンドウのファイルまたはフォルダー、構造ツールウィンドウのメンバー、コミットツールウィンドウの変更リスト、TODO リストの項目など) をすばやく検索できます。ツールウィンドウ、ツリー、リスト、ポップアップを選択します。ファイル、クラス、フィールドの名前など、アイテム名の入力を開始します。入力すると、入力した文字を示すフィールドがツールウィンドウ上に表示され、選択範囲が指定した文字列に一致する最初の項目に移動します。文字列の一致する...