0Pricing
PHP Academy · レッスン

XdebugでPHPをプロファイリングする

Xdebugのプロファイリングを有効にし、callgrind出力を分析して遅い関数を見つけます

「XdebugでPHPをプロファイリングする」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

Xdebugとは何ですか

Xdebugは、デバッグ、コードカバレッジ、プロファイリングの機能を提供するPHP拡張機能です。プロファイラーは、各関数呼び出しにかかった時間と呼び出し回数を記録します。

Xdebugのインストール

PECLまたはパッケージマネージャーを使用してインストールします。

# Via PECL:
$ pecl install xdebug
# Via apt:
$ apt install php-xdebug
# Verify:
$ php -v | grep Xdebug

プロファイラーの有効化

php.iniでXdebugを設定し、プロファイリングを有効にします。

# php.ini
[xdebug]
zend_extension=xdebug.so
xdebug.mode=profile
xdebug.output_dir=/tmp/xdebug
xdebug.profiler_output_name=cachegrind.out.%t

トリガーによるプロファイリング

すべてのリクエストをプロファイリングする代わりに、トリガーを使用して必要なときだけプロファイリングします。

# php.ini
xdebug.mode=profile
xdebug.start_with_request=trigger

# Trigger via query parameter or cookie:
curl "https://example.com/?XDEBUG_PROFILE=1"

Callgrind出力

Xdebugはcachegrind.out.*ファイルを書き出します。この形式はプロファイリング可視化ツールで読み取れます。

KCachegrind/QCachegrindで分析する

LinuxではKCachegrind、macOS/WindowsではQCachegrindでcallgrindファイルを開くと、関数呼び出し回数、合計時間、自己時間、呼び出しツリーを確認できます。

WebGrindで分析する

WebGrindはブラウザベースのcallgrindビューアーです。デスクトップツールより簡単にセットアップできます。

$ docker run -p 8080:80 jokkedk/webgrind -v /tmp/xdebug:/tmp

プロファイラー出力の読み方

「Inclusive Cost」(呼び出し先を含む合計時間)と「Self Cost」(関数本体だけにかかった時間)が最も高い関数を探します。Self Costから実際のボトルネックを特定できます。

よく見つかるボトルネック

典型的な例は、N+1データベースクエリ、非効率な正規表現、重複したAPI呼び出し、最適化されていないEloquentリレーション、コストの高いビューのレンダリングです。

プロファイリングとデバッグの違い

プロファイリングは、時間や呼び出し回数などの性能を測定します。デバッグ(Xdebugの機能の1つ)は、ブレークポイントで実行を一時停止し、コードを調査します。Xdebugでは別々のモードを使用してください。

代替手段としてのBlackfire

Blackfire.ioは、洗練されたUI、CI統合、パフォーマンスアサーションを備えた商用プロファイリングツールです。チーム環境では、生のXdebugプロファイリングよりも推奨されます。

まとめ

php.iniでXdebugのプロファイラーモードを有効にし、リクエストをトリガーして、KCachegrindまたはWebGrindでcallgrindファイルを開きます。ボトルネックを見つけるには、Inclusive CostとSelf Costが最も高い関数に注目します。

理解度チェック

プロファイラーレポートにおける「Self Cost」とは何を意味しますか。

よくある質問

「XdebugでPHPをプロファイリングする」レッスンは無料ですか?

はい。「XdebugでPHPをプロファイリングする」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「XdebugでPHPをプロファイリングする」で何を学びますか?

Xdebugのプロファイリングを有効にし、callgrind出力を分析して遅い関数を見つけます ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「XdebugでPHPをプロファイリングする」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. XdebugでPHPをプロファイリングする
  2. OPcache:バイトコードキャッシュ
  3. データベースクエリの最適化
  4. メモリ管理とパフォーマンスのヒント
← PHP Academyに戻る