Blackfire.io: غوص عميق في التنميط الأداء لتطبيقات PHP أسرع
لا أحد يتمتع بتطبيقات بطيئة وغير عملية ، خاصة عند التعامل مع قواعد البيانات المتوسعة بسرعة وملايين الطلبات اليومية. يوفر التنميط حلاً ، وتوفير رؤى حول استهلاك موارد البرنامج (الوقت والذاكرة). هذا يسمح بتحديد وحل اختناقات الأداء. توجد العديد من أدوات التنميط ، كل منها يستخدم منهجيات مختلفة.
اثنين من نهجين التوصيف الأساسي هما أخذ العينات والأجهزة. يلتقط أخذ العينات بشكل دوري لقطات من مكدس المكالمات أو الذاكرة ، مما يؤثر على الحد الأدنى من الأداء ولكن من المحتمل أن يفقد التفاصيل. على العكس من ذلك ، تقوم الأجهزة بإدراج تعليمات التنميط مباشرة في الكود (إما يدويًا أو تلقائيًا على مستوى Bytecode) ، مما يوفر تفاصيل دقيقة ولكن مع زيادة الأداء.
Blackfire.io يقف بعيدًا. يستخدم هذا الجيل التالي من الويب Profiler الأجهزة التلقائية دون التضحية بأداء التطبيق. تم تطوير BlackFire من قبل Sensiolabs (المبدعين من إطار Symfony) ، يتيح اختبار الأداء المستمر دون طلب تعديلات رمز.
يمكن الوصول إليه عبر امتداد كروم أو واجهة سطر الأوامر ، يتم دمج Blackfire بسهولة في بيئات مختلفة ، بما في ذلك Homestead. يوضح هذا البرنامج التعليمي استخدام Blackfire في بناء تطبيقات أسرع داخل الإعداد المحسّن.
ميزات المفتاح:
ابدء:
بعد الوصول إلى مربعك المتشرد عبر 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 على خمسة مكونات أساسية:
(تم تثبيت المسبار ، العميل ، والعميل مسبقًا في 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 ، واستخدام الذاكرة ، وما إلى ذلك).
5. التحسين وإعادة الربح:
قم بتحسين البرنامج النصي لتقليل مكالمات قاعدة البيانات (على سبيل المثال ، باستخدام عبارة إدراج واحدة ذات قيم متعددة). قم بإنشاء Benchmark-After.php
مع الكود المحسّن. إعادة الرسم ، مقارنة مع الملف الشخصي المرجعي.
تبرز المقارنة تحسينات الأداء.
واجهة خط الأوامر:
يسمح Blackfire's CLI ( Blackfire
) بالتوصيف عبر المحطة:
تنميط البرامج النصية CLI:
إنشاء ملف تعريف مرجع: Blackfire-resference = profile-id curl http: // your-url
يسمح خاتمة:
Blackfire.io هي أداة قوية لتحسين أداء تطبيق PHP. سهولة الاستخدام ، والتحليل التفصيلي ، وقدرات الاختبار المستمرة تجعلها لا تقدر بثمن للمطورين الذين يسعون إلى تطبيقات عالية الأداء. توضح الأسئلة الشائعة المقدمة قدراتها وفوائدها. تذكر أن تحل محل قيم العناصر النائمة في أمثلة التعليمات البرمجية بمعرف الخادم الفعلي والرموز وبيانات اعتماد قاعدة البيانات.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3