blackfire.io:深入研究更快的PHP應用程序的性能分析
>沒有人喜歡緩慢,笨拙的應用程序,尤其是在處理快速擴展的數據庫和數百萬日常請求時。 分析提供了一個解決方案,提供了對程序資源消耗(時間和內存)的見解。這允許識別和解決性能瓶頸。 存在許多分析工具,每種工具都採用不同的方法。
密鑰功能:
零影響儀器:與傳統介紹者不同,黑火不會減慢您的應用程序。
> 通過Chrome擴展名或命令行工具。>通過vagrant ssh
訪問您的流浪框後,創建一個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"
黑火體系結構:
黑火包括五個核心組件:
基本術語:
參考資料:比較的基線性能測量。
1。虛擬數據生成(userproviderjson.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
創建一個具有適當列的MySQL數據庫(
)。
3。主腳本(Benchmark-before.php):blackfire_tutorial
sample_users
4。初始分析:
<?php $db = new PDO('mysql:host=localhost;dbname=blackfire_tutorial;charset=utf8', 'homestead', 'secret'); function SaveCustomers($db) { $users = json_decode(file_get_contents('data/users.json'), true); foreach ($users as $user) { $stmt = $db->prepare("INSERT INTO sample_users (name, email, city) VALUES (?, ?, ?)"); $stmt->execute([$user['name'], $user['email'], $user['city']]); } } SaveCustomers($db); echo 'Users imported successfully.';
,創建一個新的參考配置文件。
>Blackfire Web界面提供了詳細的分析:工具欄匯總了關鍵指標,可視化執行流,具有詳細定時信息的功能列表以及各種指標(SQL查詢,內存使用等)。
benchmark-before.php
5。優化和重新封建:
>優化腳本以減少數據庫調用(例如,使用具有多個值的單個插入語句)。 用優化的代碼創建benchmark-after.php
。重新構圖,與參考配置文件進行比較。
比較突出了績效的改進。
命令行接口:
)允許通過終端進行分析:blackfire
blackfire curl http://your-url
blackfire run php your-script.php
創建一個參考資料:blackfire --new-reference curl http://your-url
blackfire --reference=profile-id curl http://your-url
>
性能測試:
blackfire(高級用戶)允許在>文件中創建性能測試,從而定義了各種指標的斷言。 .blackfire.yml
結論:
以上是與黑火的增壓應用程序的深入演練的詳細內容。更多資訊請關注PHP中文網其他相關文章!