"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > دليل التحليل العميق لتطبيق Blackfire Supercarging

دليل التحليل العميق لتطبيق Blackfire Supercarging

نشر في 2025-04-14
تصفح:979

Blackfire.io: غوص عميق في التنميط الأداء لتطبيقات PHP أسرع

لا أحد يتمتع بتطبيقات بطيئة وغير عملية ، خاصة عند التعامل مع قواعد البيانات المتوسعة بسرعة وملايين الطلبات اليومية. يوفر التنميط حلاً ، وتوفير رؤى حول استهلاك موارد البرنامج (الوقت والذاكرة). هذا يسمح بتحديد وحل اختناقات الأداء. توجد العديد من أدوات التنميط ، كل منها يستخدم منهجيات مختلفة.

An In-depth Walkthrough of Supercharging Apps with Blackfire

اثنين من نهجين التوصيف الأساسي هما أخذ العينات والأجهزة. يلتقط أخذ العينات بشكل دوري لقطات من مكدس المكالمات أو الذاكرة ، مما يؤثر على الحد الأدنى من الأداء ولكن من المحتمل أن يفقد التفاصيل. على العكس من ذلك ، تقوم الأجهزة بإدراج تعليمات التنميط مباشرة في الكود (إما يدويًا أو تلقائيًا على مستوى Bytecode) ، مما يوفر تفاصيل دقيقة ولكن مع زيادة الأداء.

An In-depth Walkthrough of Supercharging Apps with Blackfire

Blackfire.io يقف بعيدًا. يستخدم هذا الجيل التالي من الويب Profiler الأجهزة التلقائية دون التضحية بأداء التطبيق. تم تطوير BlackFire من قبل Sensiolabs (المبدعين من إطار Symfony) ، يتيح اختبار الأداء المستمر دون طلب تعديلات رمز.

يمكن الوصول إليه عبر امتداد كروم أو واجهة سطر الأوامر ، يتم دمج Blackfire بسهولة في بيئات مختلفة ، بما في ذلك Homestead. يوضح هذا البرنامج التعليمي استخدام Blackfire في بناء تطبيقات أسرع داخل الإعداد المحسّن.

ميزات المفتاح:

  • أجهزة Zero-Quarication: بخلاف profilers التقليدية ، لا يبطئ Blackfire تطبيقك.
  • واجهة مزدوجة: ملف تعريف php من خلال امتداد Chrome أو أداة سطر الأوامر.
  • توافق واسع: تكامل سلس مع العديد من مقدمي الخدمات السحابية والآلات الافتراضية ، بما في ذلك Homestead.
  • بنية معيارية: تشتمل على مسبار (امتداد PHP) ، وكيل (خادم خادم خادم) ، ورفيق (امتداد الكروم) ، والعميل (CLI) ، وواجهة قائمة على الويب.
  • اختبار مستمر: إدارة أداء استباقية بدون تغييرات رمز.
  • تصور مفصل: يمثل بيانيًا تدفقات التنفيذ ومقاييس الأداء لتحليل عنق الزجاجة الفعال.

ابدء:

بعد الوصول إلى مربعك المتشرد عبر Vagrant SSH ، قم بإنشاء حساب Blackfire (إذا لم يكن لديك بالفعل واحد). استرجع بيانات الاعتماد الخاصة بك (العميل والخادم) من إعدادات ملف تعريف Blackfire. قم بتحديث ملف الخاص بك homestead.yaml

blackfire:
    - id: "Server Id here"
      token: "Server token here"
      client-id: "Client Id here"
      client-token: "Client token here"

بنية Blackfire:

يشتمل Blackfire على خمسة مكونات أساسية:

  • probe: تمديد php يقوم بتكوين التطبيق وجمع بيانات الأداء (linux و macos).
  • الوكيل: خادم خادم تجميع معلومات الملف الشخصي إلى Blackfire.
  • رفيق: امتداد Google Chrome للتوصيف المستند إلى المتصفح.
  • العميل: ما يعادل سطر الأوامر للرفيق.
  • واجهة الويب: لوحة معلومات قائمة على الويب لتصور بيانات الملف الشخصي ومقارنتها.

(تم تثبيت المسبار ، العميل ، والعميل مسبقًا في Homestead.)

المصطلحات الأساسية:

  • ملف تعريف مرجع: قياس أداء الأساس للمقارنة.
  • الوقت الحصري: الوقت الذي يقضيه تنفيذ وظيفة ، باستثناء المكالمات الخارجية.
  • الوقت الشامل: وقت التنفيذ الكلي ، بما في ذلك المكالمات الخارجية.
  • المسارات الساخنة: الأجزاء الأكثر نشاطًا في تطبيقك أثناء التنميط.

التنميط البرنامج النصي PHP:

دعنا نلاحظ برنامج نصي يتضمن تفاعلات قاعدة البيانات. للحصول على نتائج واقعية ، سنستخدم Faker لإنشاء بيانات وهمية ، وتجنب تضمين النفقات العامة في تحليلنا الأساسي.

1. توليد البيانات الوهمية (userProviderjson.php):

 $faker->name, 'email' => $faker->email, 'city' => $faker->city,];
}

file_put_contents('data/users.json', json_encode($data));

echo 'JSON file generated.';
قم بتشغيل هذا البرنامج النصي باستخدام

php userproviderjson.php . هذا ينشئ بيانات/مستخدمين. 2. إعداد قاعدة البيانات:

قم بإنشاء قاعدة بيانات mysql ( Blackfire_Tutorial

) والجدول (

sample_users ) مع الأعمدة المناسبة. 3. البرنامج النصي الرئيسي (Benchmark-before.php):

إعداد ("insert في sample_users (الاسم ، البريد الإلكتروني ، المدينة) قيم (؟ ،؟)") ؛ $ STMT-> تنفيذ ([$ user ['name'] ، $ user ['email'] ، $ user ['city']]) ؛ } } savecustomers ($ db) ؛ صدى "المستخدمين يستوردون بنجاح." ؛

prepare("INSERT INTO sample_users (name, email, city) VALUES (?, ?, ?)");
        $stmt->execute([$user['name'], $user['email'], $user['city']]);
    }
}

SaveCustomers($db);
echo 'Users imported successfully.';

4. التنميط الأولي:

باستخدام امتداد Chrome Blackfire ، الملف الشخصي Benchmark-Before.php

، وإنشاء ملف تعريف مرجعي جديد.

توفر واجهة ويب Blackfire تحليلًا مفصلاً: شريط أدوات يلخص مقاييس المفاتيح ، ورسوم استدعاء تخيل تدفق التنفيذ ، وروايات الوظائف مع معلومات توقيت مفصلة ، ومقاييس مختلفة (استعلامات SQL ، واستخدام الذاكرة ، وما إلى ذلك). An In-depth Walkthrough of Supercharging Apps with Blackfire

5. التحسين وإعادة الربح:

قم بتحسين البرنامج النصي لتقليل مكالمات قاعدة البيانات (على سبيل المثال ، باستخدام عبارة إدراج واحدة ذات قيم متعددة). قم بإنشاء Benchmark-After.php

مع الكود المحسّن. إعادة الرسم ، مقارنة مع الملف الشخصي المرجعي.

تبرز المقارنة تحسينات الأداء. An In-depth Walkthrough of Supercharging Apps with Blackfire

واجهة خط الأوامر:

يسمح Blackfire's CLI ( Blackfire

) بالتوصيف عبر المحطة:

perfiling طلبات http:
  • Blackfire curl http: // your-url تنميط البرامج النصية CLI:
  • Blackfire قم بتشغيل php your-script.php إنشاء ملف تعريف مرجع:
  • مقارنة مع مرجع: Blackfire-resference = profile-id curl http: // your-url
  • اختبارات الأداء: يسمح
  • Blackfire (المستخدمين المتميزون) بإنشاء اختبارات أداء داخل
.

خاتمة:

Blackfire.io هي أداة قوية لتحسين أداء تطبيق PHP. سهولة الاستخدام ، والتحليل التفصيلي ، وقدرات الاختبار المستمرة تجعلها لا تقدر بثمن للمطورين الذين يسعون إلى تطبيقات عالية الأداء. توضح الأسئلة الشائعة المقدمة قدراتها وفوائدها. تذكر أن تحل محل قيم العناصر النائمة في أمثلة التعليمات البرمجية بمعرف الخادم الفعلي والرموز وبيانات اعتماد قاعدة البيانات.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3