سيقوم كل ملحق تضيفه إلى موقع WordPress الخاص بك بإضافة وقت تنفيذ تعليمات واستعلامات قاعدة بيانات. سنشرح لك في هذا الدليل التعليمي كيفية التحقق من المصدر القادم منه وقت تنفيذ التعليمات. ومع هذه التعليمات سيكون بمقدورك أنت وفريق دعم WPML العثور على مصدر الأزمات وتحسين أداء موقعك.

تثبيت وتفعيل ملحق Debug Objects

سنستخدم ملحق Debug Objects للتعرف على استعلامات قاعدة البيانات اللازمة لتشغيل موقعك وفهمها. سيقوم الملحق بعرض لائحة مفصلة للاستعلامات التي تعمل على كل صفحة في الموقع. هذه النتيجة لا تكون ظاهرة سوى لك عند تسجيل دخولك كمدير. لن يرى الزوار معلومات معالجة المشاكل.

لتثبيت الملحق، اذهب إلى لوحة أدوات WordPress واختر الملحقات من القائمة اليسرى، ثم إضافة جديد. في حقل البحث، اكتب “debug objects” واضغط على زر الإدخال.

في شاشة نتائج البحث، انقر على زر التثبيت الآن:

تثبيت ملحق Debug Objects
تثبيت ملحق Debug Objects

بعد اكتمال التثبيت، قم بتفعيل الملحق.

بدلاً من ذلك، يمكنك تنزيل ملحق Debug Objects مباشرة من مستودع WordPress وارفعه إلى مجلد wp-content/plugins على خادمك. ثم، قم بتفعيله من خلال صفحة الملحقات في شاشة مدير WordPress.

تعطيل Xdebug

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

تكوين إعدادات Debug Objects لتحليل استعلامات SQL

أولاً، برجاء إضافة هذا السطر إلى ملف wp-config.php (هذا الملف موجود في الدليل الرئيسي المثبّت فيه WordPress):

define( 'SAVEQUERIES', TRUE );

الآن، اذهب إلى الأدوات -> Debug Objects وعطّل كل الخيارات ما عدا DB Query:

تكوين إعدادات Debug Objects
تكوين إعدادات Debug Objects

مرر للأسفل حتى نهاية هذه الشاشة وانقر على زر حفظ.

فحص نتيجة معالجة المشاكل

بعد تفعيل الملحق وتكوين إعداداته بشكلٍ صحيح، يمكنك بدء عملية معالجة المشاكل. بعد تسجيل الدخول كمدير WordPress، قم بزيارة أي صفحة تشعر بأن موقعك فيها يعمل ببطء للغاية (إذا كانت هذه هي حالة عدة صفحات، اختر صفحة يبدو أنها الأبطأ) وانقر على رابط Objects في شريط قائمة المدير العلوي:

رابط Debug Objects جاهز لك
رابط Debug Objects جاهز لك

سترى ثلاث علامات تبويب مع معلومات معالجة المشاكل:

نتائج Debug Objects في ثلاث علامات تبويب
نتائج Debug Objects في ثلاث علامات تبويب

كيفية قراءة وفهم نتائج معالجة المشاكل

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

  • الاستعلامات البطيئة للغاية – في بعض الأحيان عادة ما يكون السبب الأكبر لمشكلة الأداء وجود عدة استعلامات تستغرق وقتًا طويلاً لمعالجتها
  • الاستعلامات العديدة المتكررة – في بعض الأحيان الأخرى، لا تكون هناك استعلامات بطيئة للغاية، ولكن وجود عدة استعلامات سريعة في نفس الوقت يحتاج إلى وقت طويل كي تكتمل

تحديد الاستعلامات البطيئة

اذهب إلى علامة التبويب الأولى، المسماة DB Queries، وابحث عن أبطأ الاستعلامات. سيساعدنا ملحق Debug Objects في فعل ذلك بتمييز الاستعلامات التي تحتاج إلى أكثر من 0.5 مللي ثانية بحافة برتقالية:

الاستعلامات البطيئة
الاستعلامات البطيئة

تحت نص الاستعلام، يمكنك رؤية اسم الوظيفة التي نفّذت الاستعلام. مع ذلك، قد يكون ذلك مضلّلاً لأن علامة التبويب هذه لا تعرض سوى آخر وظيفة من المجموعة الكاملة لتنفيذ التعليمات ولا نعرف ما إذا كان ذلك صادر عن نواة WordPress أو من أحد الملحقات (أو أي ملحق).

التحقق ما إذا كان الاستعلام قادم من ملحق WPML

انسخ الملحق البطيء (ctrl+C) وحدد علامة التبويب الثانية، المسماة Plugin DB queries. يمكنك رؤية بعض الجداول المحتوية على استعلامات، والتي تكون منظمة وفقًا لأسماء الملحقات وملفات الملحقات التي مرت من خلالها الاستعلامات. إذا كان ملحق WPML مشاركًا في تنفيذ تعليمات هذا الاستعلام، فينبغي أن يكون مدرجًا في الجدول المناسب.

اضغط على ctrl+F في لوحة مفاتيحك، ثم اضغط على ctrl+V للصق الاستعلام المنسوخ.

سيؤدي ذلك إلى بدء البحث عن كل مكان يتواجد فيه الاستعلام المحدد في هذا الجدول. من المحتمل أنك سترى أكثر من نتيجة واحدة. للتنقل بينهم، اضغط على زر F3.

مع كل نتيجة بحث، تحقق ما إذا كان موضعها في الجدول تحت أحد ملحقات WPML. إذا حدث ذلك، قم بتسجيل:

  • اسم الملحق
  • الملف الذي تم تنفيذ الاستعلام فيه
  • رقم السطر في هذا الملف (العمود الأول في الجدول)

تفاصيل الاستعلام
تفاصيل الاستعلام

الاستعلامات الشائعة من WPML والملحقات الأخرى، والقوالب

بعض الاستعلامات تمر من خلال الملحقات أو القوالب الأخرى، وكذا ملحق WPML. على سبيل المثال، يقدم ملحق ترجمة النصوص الخاص بـ WPML خدمات ترجمة للنصوص الموجودة في نواة WordPress، والقالب، وكل الملحقات الأخرى. إذا كنت ترى ملحق ترجمة النصوص يبدأ في قائمة استعلامات قاعدة البيانات، فهذا يعني أن WPML يحتاج إلى ترجمة العديد من النصوص المختلفة في موقعك.

في هذه الحالة، الاستعلام الذي وجدت أنّه بطيء سيظهر في علامة تبويب استعلامات Plugin DB في الجدول تحت اسم ملحقنا، وأيضًا في الجداول التالية ذات الصلة بالملحقات الأخرى، أو في علامة التبويب الثالثة: استعلامات WP Content DB. برجاء التحقق من هذا قبل إبلاغك عن استعلام بطيء من خلال منتدانا. إذا وجدت نفس الاستعلام في علامة التبويب الثالثة، برجاء تدوين اسم الملف من علامة التبويب الثالثة. سنعرف ما إذا كان هناك قالب محدد له صلة بتنفيذ هذا الاستعلام البطيء وتحديد هوية القالب.

الإبلاغ عن نتائجك من خلال منتدى WPML الفني

بعد تدوينك لجميع البيانات ذات الصلة بالاستعلام البطيء، برجاء إنشاء بطاقة دعم جديدة في منتدانا وشرح مشكلتك. برجاء تضمين ما يلي في تقريرك:

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

برجاء نسخ محتوى كل علامة تبويب ومشاركته معنا باستخدام Pastepin.

لفعل ذلك:

  1. اذهب إلى منتدى الدعم الفني الخاص بـ WPML وابدأ موضوعًا جديدًا. صِف مشكلة الأداء التي وجدتها والموضع الذي يمكننا العثور عليها فيه.
  2. افتح علامة التبويب الأولى في نتائج Debug Objects
  3. حدد محتوى علامة التبويب هذه. احرص على تضمين كل شيء من ‘الاستعلامات’، بما في ذلك قسم ‘الأخطاء’ والقائمة الكاملة للاستعلامات.

    تحديد كل الاستعلامات
    تحديد كل الاستعلامات

  4. انسخ (ctrl+C) تحديدك
  5. اذهب إلى pastebin.com والصق (ctrl+V) تحديدك في مربع النص، ثم اضغط على زر الإرسال.

    لصق في Pastebin
    لصق في Pastebin

  6. انسخ عنوان الإنترنت من شريط العنوان بمستعرضك.

    نسخ عنوان الإنترنت لـ Pastebin
    نسخ عنوان الإنترنت لـ Pastebin

  7. الصق عنوان الإنترنت من Pastepin في موضوع الدعم.
  8. كرر الخطوات 2-6 مع محتويات علامتي التبويب الأخريين.

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


ملحق: تعطيل Xdebug

Xdebug عبارة عن امتداد PHP يسمح لك بمعالجة مشاكل الأكواد. عند استخدامه بشكلٍ صحيح، سيساعدك أيضًا في تحليل مصدر مشاكل الأداء.

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

الطريقة الصحيحة لمعالجة مشاكل الأداء مع Xdebug تكون بالقياس بدون Xdebug، والحصول على النتائج، ثم البحث عن سجل أداء المصدر باستخدام Xdebug.

Xdebug قد يكون يعمل على خادمك حتى لو لم تكن تتحقق من نتائجه. عادة ما يحدث هذا عند تمكين الأشخاص لـ Xdebug لتنفيذ أعمال معالجة المشاكل في وقتها الحالي وعدم الانتباه إلى حِمله والظن بأنه غير نشط.

طريقة التأكد مما إذا كان معطلاً تكون بمراجعة نتائج phpinfo().

Xdebug ظاهر في نتائج phpinfo
Xdebug ظاهر في نتائج phpinfo (تقييم سيء للأداء)

إذا كنت ترغب في إيقاف Xdebug، فافعل ذلك من خلال الإزالة أو التعطيل بالتحويل إلى تعليق إما من ملف php.ini أو من ملف conf.d/xdebug.ini:

zend_extension=xdebug.so

أزل، ولا تضف السطر أعلاه!

هكذا ينبغي أن يبدو phpinfo عند عدم عمل Xdebug:

phpinfo عند عدم عمل Xdebug (تقييم جيد للأداء)
phpinfo عند عدم عمل Xdebug (تقييم جيد للأداء)

ما أن ترى أن هذا لا يحتوي على أي مرجع لـ Xdebug، فهذا معناه أنه متوقف بالتأكيد.

لا يهم ما إذا كانت الأقسام الأخرى لملف phpinfo هذا تحتوي أو لا تحتوي على مراجع لـ Xdebug، ما دام أنه غير ظاهر كامتداد مُحمّل في الأعلى.