يتحدث المقال عن أداة ملائمة لمقارنة الجلسات الخاصة بتوصيف كود PHP ، مما جعل من الممكن العثور بسرعة على الاختناقات في مشروع على Bitrix CMS.
من بعيد
في يوليو ، تم تحديث Bitrix إلى أحدث إصدار في ذلك الوقت ... وسرعة تحميل الصفحة انخفضت: في مكان ما بنسبة 20 ٪ ، في مكان ما بنسبة 300 ٪. خاصة في مراحل طلب العملاء.
الأرقام مؤثرة وحزينة. لماذا المحدثة؟

أي كان هناك خطر من أننا إذا لم نقم بالتحديث ، فسيتعين علينا حل مشكلتين في وقت واحد: في الواقع تحديث Bitrix وتحديث قاعدة الكود الخاصة بنا إلى PHP> 7.1.
سبب الفرامل
سبب أكبر الفرامل ، كما اتضح ، هو منطق الكود الجديد للعمل مع ملفات تعريف التسليم. وفقًا للرمز ، فعلوا ذلك بشكل صحيح ، أو شيء: ظهرت الشحنات ككيانات منفصلة. الآن يمكن إرسال الطلب في العديد من الشحنات (مع خصائصه الخاصة من حيث التكلفة وطريقة التسليم وتكوين البضائع).
ومع ذلك ، أصبح ملف تعريف التسليم هو إدخال منفصل في قاعدة البيانات مع قيوده من Bitrix kernel ، والتي ستظهر في كل مرة تحتاج فيها إلى التحقق من إمكانية إظهار ملف التعريف هذا عند تقديم الطلب.
بشكل عام ، لن تركز المقالة على ما تم إعادة بنائه بالضبط للتعامل مع المكابح ، ولكن على الأداة التي مكّنت من العثور بسرعة على الاختناقات الموجودة في الكود وإصلاحها.
XHProf الادارية
تحت تصرفنا كان بروفيل شعبية من Facebook - XHProf. تتعلق المساوئ التي تحول دون تشغيل الأداة بـ GUI الخاص بها:
- عدم وجود التنقل واضحة بين جلسات التنميط
- عدم القدرة على مقارنة أكثر من جلستين في وقت واحد خارج نفس مساحة الاسم.
- لا يمكنك تقديم تعليقات عليها في قائمة الجلسات. بعد الجلسة العاشرة ، نسيت بالفعل التغييرات التي تتعلق بنتائج ملفات التعريف السابقة.
نتيجةً لذلك ، بالنظر إلى مصادر واجهة المستخدم الرسومية XHProf الأصلية ، وبصورة مروعة بعض الشيء ، تمت كتابة واجهة المستخدم الرسومية الجديدة ، والتي تغطي العيوب المذكورة أعلاه.
تركيب
→ وصلة إلى المشروع
لن أصف كيفية تثبيت XHProf وملف التعريف ، فهناك على الأقل بعض البرامج التعليمية الجيدة على Habré.
لتثبيت XHProf Admin ، ضع مجلد xhprof_admin في مجلد xhprof_html الخاص بـ XHProf الأصلي. أو استنساخ المشروع بأكمله (يحتوي بالفعل على كل من XHProf و GUI الجديد).
ثم افتح الصفحة <المسار إلى xhprof> / xhprof_html / xhprof_admin /
إذا تم تمكين التعيين ، كما هو موصى به في الوثائق ، فستحتاج إلى فتح <المسار إلى xhprof> / xhprof_admin /
الصفحة الرئيسية

يحتوي على:
- قائمة جميع جلسات التنميط مرتبة حسب التاريخ
- حقول تعليق الجلسة
- الغربان التي يمكنك من خلالها تحديد جلسات لحذفها أو مقارنتها أو تجميعها
- رابط لتقرير جديد
- روابط للتقرير الأصلي و callgraph
- حقول وزن الدورة لـ Diff و التجميعية
- حقل يحدد التسلسل الذي سيتم عرض الجلسات فيه في وضع المقارنة وأيضًا في وضع Diff
- أزرار:
- مقارنة - مقارنة الجلسات المحددة (تقرير جديد)
- الفرق - تقرير قياسي لمقارنة الجلسات في مساحة اسم واحدة
- تجميع - تقرير قياسي مع تجميع الجلسة في مساحة اسم واحدة
- حفظ التعليقات المخصصة - يحفظ التعليق للجلسة (في ملف منفصل)
- حذف أشواط مختارة - حذف ملفات الجلسة وتعليق الملفات
- رابط إلى صفحة قائمة الجلسة الأصلية
عرض التقرير الأصلي ، تشغيل Diff ، التشغيل الكلي ، عرض callgraph - الميزات الأصلية لـ XHProf GUI - لن أصفها. لا أستطيع إلا أن أقول إن XHProf Admin يتيح لك التنقل بسهولة إليها ، بدلاً من تجميع الروابط يدويًا.
قارن أشواط

تقرير جديد يسمح لك بتقييم النمو أو الانحدار في الإنتاجية بسرعة.
لاستخدامها ، على الصفحة الرئيسية:
- حدد الجلسات التي نريد مقارنتها.
- قمنا بتعيين حقل الفرز "فرز" لتحديد الترتيب الذي يتم عرض الجلسات به: كلما كانت قيمة الحقل أصغر ، كلما كانت الجلسة في وقت مبكر. سيتم اعتبار الجلسة الأولى كقاعدة واحدة - سيتم مقارنة جميع الجلسات اللاحقة بها.
- إذا كنا نريد عرض متوسط قيم المقاييس ، فعليك تحديد "إظهار المتوسط".
- انقر فوق "مقارنة".

لا يُظهر التقرير النسبة المئوية التي "تشغلها" الوظيفة لكل قياس حتى لا تشوش الصفحة ، بل تعرض القيم المطلقة. إذا كان هناك اختلاف بأكثر من 1٪ في المقياس الخاص بالوظيفة التي يتم تصنيفها بين الجلسة الأساسية والجلسة التالية ، فسيظهر ذلك بوضوح: الأخضر يشير إلى التحسن ، الأحمر يشير إلى الانحدار.
بشكل افتراضي:
- يعرض التقرير أول 100 وظيفة. إذا كنت بحاجة إلى المزيد ، انقر فوق "عرض الكل".
- يتم فرز البيانات حسب "مدفوع. وقت الجدار (microsec) "" ، لكن يمكنك النقر فوق أي مقياس والفرز به.
لاستبعاد جلسة من التقرير ، انقر فوق "استبعاد".
الفرز حسب كل قياس متاح - فقط اضغط على عنوان العمود.
لعرض متوسط القيم لجميع الجلسات المحددة ، انقر فوق "إظهار متوسط القيم".
للتنقل على إحدى الوظائف ، يمكنك النقر فوق إحدى الخلايا عند تقاطع الوظيفة والقياس الموضح في الجلسة.

مثال للاستخدام
- بدأنا التعريف في الكود المصدري. فتحنا قائمة الجلسات وأضفنا تعليقًا عليها.
- بدأنا منشئ ملفات التعريف على الكود المحسن. وأضاف أيضا تعليق.
- هل البند 2 عدة مرات.
- ثم فتحنا قائمة جلسات التوصيف ، وحددنا جميع الجلسات بالتتابع ونقرنا على المقارنة.
- نظرنا إلى التغييرات.
- قرروا ماذا لتسريع.
يستخدم XHProf Admin بسهولة لتحديد الوظائف الثقيلة شائعة الاستخدام التي يؤديها مستخدم واحد. على سبيل المثال ، في Bitrix ، عند تقديم طلب عند الانتقال من مرحلة إلى أخرى (التسليم ، والدفع ، وجهات الاتصال ، وما إلى ذلك) في كل مرة يتم استدعاء عدد من الوظائف للتحكم في سلامة السلة ، وما إلى ذلك. يتم تحديد هذه المراحل بشكل منفصل ثم يتم عرضها معًا في التقرير مقارنة. يمكن تخزين نتائج هذه الوظائف مؤقتًا ، مما يسرع بشكل كبير من وقت الانتقال من مرحلة إلى أخرى.
يؤدي
نتيجة لذلك ، قمنا بتسوية انخفاض السرعة في مراحل تقديم طلب عند تحديث Bitrix ، مع تحليل أقسام أخرى من الموقع في وقت واحد وتسريعها.
من وقت لآخر ، نستخدم XHProf Admin في المشاريع باعتبارها واجهة المستخدم الرسومية أكثر سهولة.
رابط التوثيق إلى XHProf Admin: اذهب
من يهتم بموضوع تحسين الشفرة وأدواته ، اكتب التعليقات.