تعزيز الأداء: أفضل الممارسات لتحسين البرامج النصية PHP

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

الجمهور المستهدف: هذه المقالة موجهة للمبتدئين إلى المتوسطين مطورو PHP الذين يتطلعون إلى تحسين أداء تطبيقات الويب الخاصة بهم من خلال تطبيق تقنيات التحسين العملي.

1.خبئها وكأنك تعنيها

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

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

الإعداد خطوة بخطوة لذاكرة التخزين المؤقت OPcache:

  1. تأكد من تثبيت OPcache: sudo apt-get install php-opcache
  2. قم بتمكين OPcache في php.ini file:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000

3- أعد تشغيل خادم الويب الخاص بك: إعادة تشغيل خدمة sudo service apache2

2.تحسين استعلامات قاعدة البيانات

في معظم تطبيقات PHP، تكون قاعدة البيانات هي عنق الزجاجة في الأداء. تأكد من أنك لا تقوم بإجراء مكالمات غير ضرورية لقاعدة البيانات - اجلب فقط البيانات التي تحتاجها واستفد من الحقول المفهرسة لتسريع عمليات البحث. فكر في ضم الجداول أو استخدام العبارات المعدة مسبقًا بدلاً من التكرار عبر استدعاءات قاعدة البيانات المتعددة. يساوي الاستعلام المحسّن أكثر من مائة سطر من كود PHP.

مثال على الرمز:

// استخدام JOIN لتحسين جلب منشور المدونة مع التعليقات
$query = "SELECT SELECT posts.*, comments.* من المشاركات LEFT JOIN تعليقات على post.id = comments.post_id حيث post.id = ؟";
$stmt = $db->prepare($query);
$stmt-> تنفيذ([$postId]);
$results = $stmt-> جلب الكل();

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

3.استخدم الوظائف المدمجة بحكمة

يأتي PHP مزودًا بالعديد من الدوال المدمجة التي تم تحسينها من أجل الأداء. عندما يكون ذلك ممكنًا، استخدم هذه الدوال بدلاً من كتابة دوالك الخاصة. على سبيل المثال، دوال مثل في_مصفوفة() أو مصفوفة_بحث() عالية الكفاءة ومُحسَّنة للغرض منها. إذا كانت هناك وظيفة مدمجة تناسب احتياجاتك، فقم بتفضيلها دائمًا على حل مخصص.

مثال على الكود

// بدلًا من كتابة دالة مخصصة للبحث عن قيمة في مصفوفة
دالة CustomSearch($needle, $haystack) {
قبل كل ($haystack ك $value) {
إذا ($value === $needle) {
إرجاع صحيح;
}
}
إرجاع خطأ;
}

// استخدم الدالة المدمجة
$found = in_array($needle, $haystack)؛ // هذا أسرع وأكثر كفاءة

4. تجنب التحميل الزائد مع الحلقات

الحلقات المتداخلة سيئة السمعة لأنها تعيق الأداء. حاول دائمًا تقليل تداخل الحلقات أو ابحث عن طرق لتقليل التكرارات. بدلًا من استخدام عدة لـ الحلقات، فكر في دوال المصفوفة مثل مصفوفة_خريطة(), مصفوفة_فلتر()أو قبل كل مع فواصل منطقية للحفاظ على كفاءة العمليات.

مثال على الرمز:

// استخدام array_map لتطبيق دالة على كل عنصر
$numbers = [1، 2، 3، 4، 5];
$P4TsquaredNumbers = array_map(function($number) {
إرجاع $number * $number;
}، $numbers);

5. نبذة عن الرمز الخاص بك

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

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

إعداد مناسب للمبتدئين في Xdebug:

قم بتثبيت Xdebug: بيكل تثبيت xdebug

التمكين Xdebug في php.ini file:

zend_extension="xdebug.so" 

xdebug.profiler_enable = 1

أعد تشغيل خادمك وحلل ملف التخزين المؤقت الذي تم إنشاؤه باستخدام أدوات مثل كاش غرايند.

مثال على الكود (باستخدام Xdebug):

// لتوصيف النص البرمجي الخاص بك باستخدام Xdebug، قم بتمكين توصيف Xdebug في php.ini الخاص بك
xdebug.profiler_enable = 1;
// تحليل ملف cachegrind الذي تم إنشاؤه باستخدام أدوات مثل KCacheGrind.

6- استخدم أجهزة التحميل الآلي بحكمة

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

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

مثال للمبتدئين: عند إعداد التحميل التلقائي باستخدام Composer، استخدم:

{
"التحميل التلقائي": {
"psr-4": {
"App\\\": "src/"
}
}
}

بعد التحرير كومبوسر.jsonاركض الملحن التفريغ التلقائي للتحميل التلقائي - تحسين لضمان تحميل الملفات الضرورية فقط.

7. الاستفادة من التخزين المؤقت للإخراج

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

سيناريو العالم الحقيقي: بالنسبة لموقع مدونة ذات حركة مرور عالية يقدم محتوى ديناميكي، يمكن أن يساعد تمكين التخزين المؤقت للإخراج في تقليل وقت التحميل بشكل كبير. من خلال تجميع كل المحتوى وإرساله دفعة واحدة، يقلل الخادم من التفاعلات مع العميل، خاصة عند إنشاء صفحات HTML كبيرة الحجم.

مثال على الكود:

// تمكين التخزين المؤقت للإخراج
ob_start();
صدى "هذا بعض المحتوى.";
صدى " المزيد من المحتوى.";
// إرسال جميع المخرجات دفعة واحدة
صدى ob_get_clean();

مثال للمبتدئين: لإرسال نموذج بسيط، بدلاً من تكرار كل رد سطر بسطر، استخدم التخزين المؤقت للمخرجات لجمع المخرجات وإرسالها دفعة واحدة. هذا يقلل من وقت التفاعل بين الخادم والعميل.

8. تقليل إدخال/إخراج الملفات إلى الحد الأدنى

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

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

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

9. إيقاف تشغيل التصحيح في الإنتاج

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

10. استخدام شبكات توصيل المحتوى (CDNs)

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

الخاتمة

تحسين الأداء لا يتعلق فقط بكتابة التعليمات البرمجية التي تعمل؛ بل يتعلق بكتابة التعليمات البرمجية التي تعمل بكفاءة. من خلال اتباع أفضل الممارسات هذه - التخزين المؤقت للنتائج، وتحسين تفاعلات قاعدة البيانات، والاستفادة من الوظائف المدمجة، وتحديد ملامح البرامج النصية الخاصة بك - يمكنك ضمان أن يظل تطبيق PHP الخاص بك سريعًا ويقدم تجربة مستخدم من الدرجة الأولى. تذكر أن موقع الويب الأسرع هو موقع ويب أكثر سعادة، سواء بالنسبة لك أو للمستخدمين.

هل جربت أيًا من هذه الأساليب، أو هل لديك طريقة مفضلة لتحسين نصوص PHP الخاصة بك؟ اترك تعليقًا أدناه وشاركنا بأفكارك!

مقالات ذات صلة

الردود

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *