blackfire.io:より速いPHPアプリケーションのためにパフォーマンスプロファイリングに深く掘り下げます
特に急速に拡大するデータベースや何百万もの毎日のリクエストを扱う場合、ゆっくりと扱いにくいアプリケーションを享受する人はいません。 プロファイリングはソリューションを提供し、プログラムのリソース消費(時間とメモリ)に関する洞察を提供します。これにより、パフォーマンスボトルネックの識別と解像度が可能になります。 多数のプロファイリングツールが存在し、それぞれ異なる方法論を採用しています。
2つの主要なプロファイリングアプローチは、サンプリングと計装です。サンプリングは定期的にコールスタックまたはメモリのスナップショットをキャプチャし、パフォーマンスに最小限に及ぼすが、詳細が欠落している可能性があります。逆に、計装はプロファイリング手順をコードに直接挿入し(バイトコードレベルで手動または自動的に自動的に)、正確な詳細を提供しますが、パフォーマンスオーバーヘッドが大きくなります。
。
blackfire.ioは離れています。 この次世代Webプロファイラーは、アプリケーションのパフォーマンスを犠牲にすることなく、自動機器を使用します。 Sensiolabs(Symfony Frameworkの作成者)によって開発されたBlackfireは、コードの変更を必要とせずに継続的なパフォーマンステストを可能にします。
Chrome拡張機能またはコマンドラインインターフェイスを介してアクセス可能であるBlackFireは、Homesteadを含むさまざまな環境に簡単に統合できます。このチュートリアルでは、ホームステッドの改善されたセットアップ内でより速いアプリケーションの構築におけるBlackFireの使用を示しています。
重要な機能:
はじめる:
Vagrant sshを介してVagrantボックスにアクセスした後、Blackfireアカウントを作成します(まだ持っていない場合)。 BlackFireプロファイル設定から資格情報(クライアントとサーバー)を取得します。 homestead.yaml
ファイル(Vagrant Boxのルートディレクトリにある)をこれらの資格情報で更新してください:
blackfire:
- id: "Server Id here"
token: "Server token here"
client-id: "Client Id here"
client-token: "Client token here"
Blackfire Architecture:Blackfireは5つのコアコンポーネントで構成されています。
プローブ:
本質的な用語:
参照プロファイル:
比較のためのベースラインパフォーマンス測定。データベースの相互作用を含むスクリプトをプロファイリングしましょう。 現実的な結果を得るには、Fakerを使用してダミーデータを生成し、プライマリ分析でFakerのオーバーヘッドを含めることを回避します。。
1。ダミーデータ生成(userproviderjson.php):
$ faker-> name、 'email' => $ faker-> email、 'city' => $ faker-> city、]; } file_put_contents( 'data/users.json'、json_encode($ data)); echo 'jsonファイルは生成されました。';
$faker->name, 'email' => $faker->email, 'city' => $faker->city,];
}
file_put_contents('data/users.json', json_encode($data));
echo 'JSON file generated.';
data/users.json 。を作成します
2。データベースのセットアップ:
MySQLデータベース( Blackfire_tutorial )とtable(
sample_users)を作成します。
3。メインスクリプト(Benchmark-before.php):
prepare( "sample_usersに挿入(name、email、city)values(?、?、?)"); $ stmt-> execute([$ user ['name']、$ user ['email']、$ user ['city']]); } } Savecustomers($ db); Echo 'ユーザーは正常にインポートしました。';
このスクリプトにURLを介してアクセスして、データベースを入力します。prepare("INSERT INTO sample_users (name, email, city) VALUES (?, ?, ?)");
$stmt->execute([$user['name'], $user['email'], $user['city']]);
}
}
SaveCustomers($db);
echo 'Users imported successfully.';
Blackfire Chrome Extension、Profile
Benchmark-before.php を使用して、新しい参照プロファイルを作成します。
Blackfire Webインターフェイスは、詳細な分析を提供します。キーメトリックを要約するツールバー、実行フローを視覚化するコールグラフ、詳細なタイミング情報を備えた関数リスト、およびさまざまなメトリック(SQLクエリ、メモリ使用量など)。
5。最適化と再職業:
スクリプトを最適化してデータベース呼び出しを削減します(たとえば、複数の値を持つ単一の挿入ステートメントを使用して)。 [最適化されたコードで
Benchmark-after.phpを作成します。参照プロファイルとの比較、を再専用します。
比較はパフォーマンスの改善を強調しています。
コマンドラインインターフェイス:
BlackfireのCLI(
Blackfire)端末経由のプロファイリングを許可します:
プロファイリングhttpリクエスト:
blackfire curl http:// your-url
blackfire run yourscript.php
Blackfire-new-reference curl http:// your-url
blackfire - reference = profile-id curl http:// your-url
ファイル内でパフォーマンステストを作成できます。 結論:
Blackfire.ioは、PHPアプリケーションのパフォーマンスを最適化するための強力なツールです。使いやすさ、詳細な分析、継続的なテスト機能により、開発者が高性能アプリケーションを目指して努力しているため、非常に貴重です。 提供されたFAQは、その能力と利点をさらに明確にします。 コード例のプレースホルダー値を実際のサーバーID、トークン、およびデータベース資格情報に置き換えることを忘れないでください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3