blackfire.io:より速いPHPアプリケーションのためにパフォーマンスプロファイリングに深く掘り下げます
特に急速に拡大するデータベースや何百万もの毎日のリクエストに対処する場合、ゆっくりと扱いにくいアプリケーションを享受する人はいません。 プロファイリングはソリューションを提供し、プログラムのリソース消費(時間とメモリ)に関する洞察を提供します。これにより、パフォーマンスボトルネックの識別と解像度が可能になります。 多数のプロファイリングツールが存在し、それぞれが異なる方法論を採用しています。
2つの主要なプロファイリングアプローチは、サンプリングと計装です。サンプリングは定期的にコールスタックまたはメモリのスナップショットをキャプチャし、パフォーマンスに最小限に及ぼすが、詳細が欠落している可能性があります。逆に、計装はプロファイリング手順をコードに直接挿入し(バイトコードレベルで手動または自動的に自動的に)、正確な詳細を提供しますが、パフォーマンスオーバーヘッドが大きくなります。
Chrome拡張機能またはコマンドラインインターフェイスを介してアクセス可能であるBlackFireは、Homesteadを含むさまざまな環境に簡単に統合できます。このチュートリアルでは、ホームステッドの改善されたセットアップ内でより速いアプリケーションの構築におけるBlackFireの使用を示しています。
主要な機能:
ゼロインパクトインストゥルメンテーション:
- 従来のプロファイラーとは異なり、ブラックファイアはアプリケーションを遅くしません。
- デュアルインターフェイス:Chrome拡張子またはコマンドラインツールを介したプロファイルPHPスクリプト。
- 幅広い互換性:ホームステッドを含む多数のクラウドプロバイダーや仮想マシンとのシームレスな統合。 モジュラーアーキテクチャ:
- プローブ(PHP拡張機能)、エージェント(サーバー側デーモン)、コンパニオン(Chrome拡張機能)、クライアント(CLI)、およびWebベースのインターフェイスを含む。 継続的なテスト: コードの変更なしのプロアクティブなパフォーマンス管理。
- 詳細な視覚化: 効果的なボトルネック分析のための実行フローとパフォーマンスメトリックをグラフィカルに表します。
- 始めましょう:
-
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は、5つのコアコンポーネントで構成されています- プローブ:
- アプリケーションの計装とパフォーマンスデータの収集(LinuxとMacOS)。 エージェント: サーバー側のデーモンの集約とプロファイル情報をBlackfireに送信します。
- コンパニオン:ブラウザベースのプロファイリング用のGoogle Chrome拡張機能
- クライアント:コンパニオンに相当するコマンドライン Webインターフェイス:
- プロファイルデータを視覚化および比較するためのWebベースのダッシュボード。 (プローブ、エージェント、クライアントは、ホームステッドの改善で事前にインストールされています。
- 本質的な用語:
リファレンスプロファイル:比較のためのベースラインパフォーマンス測定。
排他的時間:外部呼び出しを除く関数の実行に費やされた時間。
- インクルーシブ時間:
- 外部呼び出しを含む合計実行時間 ホットパス: プロファイリング中のアプリケーションの最もアクティブな部分。
- PHPスクリプトのプロファイリング:
- データベースの相互作用を含むスクリプトをプロファイリングしましょう。 現実的な結果については、Fakerを使用してダミーデータを生成し、プライマリ分析にFakerのオーバーヘッドを含めることを回避します。 1。ダミーデータ生成(userproviderjson.php):
- このスクリプトを使用してこのスクリプトを実行します。これにより、
が作成されます 2。データベースのセットアップ:
)とテーブル()を作成します。
3。メインスクリプト(Benchmark-before.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.';
php UserProviderJSON.php
data/users.json
データベースを入力するためにURLを介してこのスクリプトにアクセスしてください。4。初期プロファイリング:
BlackFire Chrome Extension、プロファイルを使用し、新しい参照プロファイルを作成します。blackfire_tutorial
sample_users
5。最適化と再拡張:
データベース呼び出しを削減するためにスクリプトを最適化します(たとえば、複数の値を持つ単一の挿入ステートメントを使用して)。 最適化されたコードを使用して
と比較してくださいbenchmark-after.php
を作成します。参照プロファイルとの比較、比較では、パフォーマンスの改善が強調されています
コマンドラインインターフェイス:
BlackFireのCLI()を使用すると、ターミナルを介してプロファイリングを許可します blackfire
-
blackfire curl http://your-url
CLIスクリプトのプロファイリング: -
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 サイトの他の関連記事を参照してください。

この記事では、PHPでインターフェイスを作成、実装、および使用する方法について説明し、コード組織と保守性の利点に焦点を当てています。

この記事では、PHPのCrypt()とpassword_hash()の違いについて、パスワードハッシュの違いについて説明し、最新のWebアプリケーションの実装、セキュリティ、および適合性に焦点を当てています。

記事では、入力検証、出力エンコード、およびOWASP ESAPIやHTML浄化器などのツールを使用して、PHPのクロスサイトスクリプト(XSS)を防止します。

PHPでのオートローディングは、必要に応じてクラスファイルを自動的にロードし、メモリの使用を削減し、コード組織を強化することでパフォーマンスを向上させます。ベストプラクティスには、PSR-4の使用とコードを効果的に整理することが含まれます。

PHPストリームは、一貫したAPIを介したファイル、ネットワークソケット、圧縮形式などのリソースの処理を統合し、複雑さを抽象化し、コードの柔軟性と効率を高めます。

この記事では、PHPでファイルアップロードサイズの管理を管理し、2MBのデフォルト制限とPHP.ini設定を変更してそれを増やす方法に焦点を当てています。

この記事では、PHP 7.1で導入されたPHPのヌル可能なタイプについて説明し、変数またはパラメーターが指定されたタイプまたはnullのいずれかを可能にします。読みやすさの改善、タイプの安全性、明示的な意図などの利点を強調し、宣言する方法を説明します

この記事では、プログラミングのunset()とlink()関数の違いについて説明し、目的とユースケースに焦点を当てています。 unset()はメモリから変数を削除しますが、link()はファイルシステムからファイルを削除します。どちらもEFFECにとって重要です


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

WebStorm Mac版
便利なJavaScript開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ホットトピック









