ホームページ >バックエンド開発 >PHPチュートリアル >Blackfireを使用したスーパーチャージアプリの詳細なウォークスルー

Blackfireを使用したスーパーチャージアプリの詳細なウォークスルー

Jennifer Aniston
Jennifer Anistonオリジナル
2025-02-16 10:53:09842ブラウズ

blackfire.io:より速いPHPアプリケーションのためにパフォーマンスプロファイリングに深く掘り下げます

特に急速に拡大するデータベースや何百万もの毎日のリクエストに対処する場合、ゆっくりと扱いにくいアプリケーションを享受する人はいません。 プロファイリングはソリューションを提供し、プログラムのリソース消費(時間とメモリ)に関する洞察を提供します。これにより、パフォーマンスボトルネックの識別と解像度が可能になります。 多数のプロファイリングツールが存在し、それぞれが異なる方法論を採用しています。

An In-depth Walkthrough of Supercharging Apps with Blackfire

2つの主要なプロファイリングアプローチは、サンプリングと計装です。サンプリングは定期的にコールスタックまたはメモリのスナップショットをキャプチャし、パフォーマンスに最小限に及ぼすが、詳細が欠落している可能性があります。逆に、計装はプロファイリング手順をコードに直接挿入し(バイトコードレベルで手動または自動的に自動的に)、正確な詳細を提供しますが、パフォーマンスオーバーヘッドが大きくなります。

An In-depth Walkthrough of Supercharging Apps with Blackfire

blackfire.ioは離れています。 この次世代Webプロファイラーは、アプリケーションのパフォーマンスを犠牲にすることなく、自動機器を使用します。 Sensiolabs(Symfony Frameworkの作成者)によって開発されたBlackfireは、コードの変更を必要とせずに継続的なパフォーマンステストを可能にします。

Chrome拡張機能またはコマンドラインインターフェイスを介してアクセス可能であるBlackFireは、Homesteadを含むさまざまな環境に簡単に統合できます。このチュートリアルでは、ホームステッドの改善されたセットアップ内でより速いアプリケーションの構築におけるBlackFireの使用を示しています。

主要な機能:

ゼロインパクトインストゥルメンテーション:
    従来のプロファイラーとは異なり、ブラックファイアはアプリケーションを遅くしません。
  • デュアルインターフェイス:Chrome拡張子またはコマンドラインツールを介したプロファイルPHPスクリプト。
  • 幅広い互換性:ホームステッドを含む多数のクラウドプロバイダーや仮想マシンとのシームレスな統合。
  • モジュラーアーキテクチャ:
  • プローブ(PHP拡張機能)、エージェント(サーバー側デーモン)、コンパニオン(Chrome拡張機能)、クライアント(CLI)、およびWebベースのインターフェイスを含む。 継続的なテスト:
  • コードの変更なしのプロアクティブなパフォーマンス管理。
  • 詳細な視覚化:
  • 効果的なボトルネック分析のための実行フローとパフォーマンスメトリックをグラフィカルに表します。
  • 始めましょう:
  • vagrant sshでVagrantボックスにアクセスした後、BlackFireアカウントを作成します(まだ持っていない場合)。 BlackFireプロファイル設定から資格情報(クライアントとサーバー)を取得します。 これらの資格情報を使用して、homestead.yamlファイル(Vagrant Boxのルートディレクトリにある)を更新します。

    <code class="language-yaml">blackfire:
        - id: "Server Id here"
          token: "Server token here"
          client-id: "Client Id here"
          client-token: "Client token here"</code>

    ブラックファイアアーキテクチャ:

    BlackFireは、5つのコアコンポーネントで構成されています

      プローブ:
    • アプリケーションの計装とパフォーマンスデータの収集(LinuxとMacOS)。 エージェント:
    • サーバー側のデーモンの集約とプロファイル情報をBlackfireに送信します。
    • コンパニオン:ブラウザベースのプロファイリング用のGoogle Chrome拡張機能
    • クライアント:コンパニオンに相当するコマンドライン
    • Webインターフェイス:
    • プロファイルデータを視覚化および比較するためのWebベースのダッシュボード。
    • (プローブ、エージェント、クライアントは、ホームステッドの改善で事前にインストールされています。
    • 本質的な用語:

    リファレンスプロファイル:比較のためのベースラインパフォーマンス測定。

    排他的時間:外部呼び出しを除く関数の実行に費やされた時間。

      インクルーシブ時間:
    • 外部呼び出しを含む合計実行時間 ホットパス:
    • プロファイリング中のアプリケーションの最もアクティブな部分。
    • PHPスクリプトのプロファイリング:
    • データベースの相互作用を含むスクリプトをプロファイリングしましょう。 現実的な結果については、Fakerを使用してダミーデータを生成し、プライマリ分析にFakerのオーバーヘッドを含めることを回避します。
    • 1。ダミーデータ生成(userproviderjson.php):
    • このスクリプトを使用してこのスクリプトを実行します。これにより、

    が作成されます 2。データベースのセットアップ:

    適切な列を使用してMySQLデータベース(

    )とテーブル()を作成します。

    3。メインスクリプト(Benchmark-before.php):
    <code class="language-php"><?php
    require_once('vendor/autoload.php');
    
    $num = isset($_GET['num']) ? $_GET['num'] : 1000;
    $data = [];
    
    $faker = Faker\Factory::create();
    
    if(!file_exists('data')) {
        mkdir('data');
    }
    
    for ($i = 0; $i < $num; $i++) {
        $data[] = ['name' => $faker->name, 'email' => $faker->email, 'city' => $faker->city,];
    }
    
    file_put_contents('data/users.json', json_encode($data));
    
    echo 'JSON file generated.';</code>

    php UserProviderJSON.php data/users.jsonデータベースを入力するためにURLを介してこのスクリプトにアクセスしてください。

    4。初期プロファイリング:

    BlackFire Chrome Extension、プロファイルを使用し、新しい参照プロファイルを作成します。

    blackfire_tutorialsample_users

    BlackFire Webインターフェイスは、詳細な分析を提供します。キーメトリックを要約するツールバー、コールグラフ視覚化実行フロー、詳細なタイミング情報を備えた関数リスト、およびさまざまなメトリック(SQLクエリ、メモリ使用量など)。

    5。最適化と再拡張:

    データベース呼び出しを削減するためにスクリプトを最適化します(たとえば、複数の値を持つ単一の挿入ステートメントを使用して)。 最適化されたコードを使用してbenchmark-after.phpを作成します。参照プロファイルとの比較、

    と比較してください

    An In-depth Walkthrough of Supercharging Apps with Blackfire

    比較では、パフォーマンスの改善が強調されています

    コマンドラインインターフェイス:

    BlackFireのCLI()を使用すると、ターミナルを介してプロファイリングを許可します

    blackfire

    プロファイリングhttpリクエスト:
    • blackfire curl http://your-urlCLIスクリプトのプロファイリング:
    • blackfire run php your-script.php参照プロファイルの作成:
    • blackfire --new-reference curl http://your-url参照との比較:
    • blackfire --reference=profile-id curl http://your-url
    • パフォーマンステスト:

    BlackFire(プレミアムユーザー)により、さまざまなメトリックに関するアサーションを定義して、ファイル内でパフォーマンステストを作成できます。

    結論:.blackfire.yml

    BlackFire.ioは、PHPアプリケーションのパフォーマンスを最適化するための強力なツールです。使いやすさ、詳細な分析、継続的なテスト機能により、開発者が高性能アプリケーションを目指して努力しているため、非常に貴重です。 提供されたFAQは、その能力と利点をさらに明確にします。 コードの例のプレースホルダーの値を実際のサーバーID、トークン、およびデータベース資格情報に置き換えることを忘れないでください。

以上がBlackfireを使用したスーパーチャージアプリの詳細なウォークスルーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。