يضمن تحسين أداء PHP تشغيل تطبيقات الويب لدينا بسلاسة، والاستجابة بسرعة، والتعامل مع حركة المرور بكفاءة. فيما يلي دليل تفصيلي خطوة بخطوة حول كيفية زيادة أداء PHP بشكل فعال، مع أمثلة عملية لكل استراتيجية تحسين.
ابدأ بالتحقق من الإصدار الحالي من PHP المثبت على نظامك:
php -v
إذا كان الإصدار الخاص بك قديمًا، فإن الترقية إلى أحدث إصدار ثابت من PHP غالبًا ما يأتي مع تحسينات في الأداء وميزات جديدة.
لتثبيت أحدث إصدار PHP، قم بتشغيل الأوامر التالية لـ Ubuntu:
sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt install php8.2 # Replace with the latest version
كل إصدار PHP جديد يجلب تعزيزات في الأداء. على سبيل المثال، يقدم PHP 7.x تحسنًا بنسبة 50% تقريبًا في وقت التنفيذ مقارنةً بـ PHP 5.x، كما يقدم PHP 8.x تحسينات كبيرة أخرى.
يقوم Opcache بتخزين الكود الثانوي للبرنامج النصي المترجم مسبقًا في الذاكرة، مما يقلل الحاجة إلى PHP لتحميل البرامج النصية وتحليلها عند كل طلب. لتمكينه:
sudo nano /etc/php/8.2/fpm/php.ini # Use your PHP version
opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.revalidate_freq=0
sudo systemctl restart php8.2-fpm sudo systemctl restart nginx
يمكن لـ Opcache تحسين الأداء بشكل كبير عن طريق التخلص من الحاجة إلى تجميع كود PHP في كل طلب، مما يقلل بشكل كبير من استخدام وحدة المعالجة المركزية ووقت الطلب.
قد تؤدي فهرسة قاعدة البيانات غير الصحيحة إلى إبطاء تنفيذ الاستعلام. تأكد من فهرسة الأعمدة المستخدمة في عبارات WHERE أو للفرز.
مثال لاستعلام MySQL:
CREATE INDEX idx_user_email ON users(email);
قم بتعريف استعلامات قاعدة البيانات الخاصة بك للعثور على الاختناقات. على سبيل المثال، يسمح Eloquent ORM الخاص بـ Laravel بتنميط الاستعلام:
DB::enableQueryLog(); $users = DB::table('users')->get(); dd(DB::getQueryLog());
من خلال تحسين استعلامات قاعدة البيانات الخاصة بك وفهرسة الأعمدة الهامة، يمكنك تقليل وقت تنفيذ الاستعلام بشكل كبير، وبالتالي تسريع تطبيق PHP الخاص بك.
يعمل Gzip على تقليل حجم البيانات المرسلة من الخادم الخاص بك إلى العميل، مما يجعل تحميل الصفحة أسرع. لتمكينه في Nginx:
sudo nano /etc/nginx/nginx.conf
gzip on; gzip_comp_level 2; gzip_types text/css application/javascript application/json image/svg xml; gzip_min_length 256;
sudo systemctl restart nginx
يؤدي تمكين ضغط Gzip إلى تقليل كمية البيانات التي يلزم نقلها، مما يؤدي إلى أوقات تحميل أسرع للصفحة وتقليل استخدام النطاق الترددي.
تقوم شبكات CDN مثل Cloudflare أو Amazon CloudFront بتخزين نسخ من الأصول الثابتة مثل CSS وJavaScript والصور على الخوادم الموزعة في جميع أنحاء العالم، مما يجعلها متاحة بالقرب من المستخدم.
مثال:
من خلال تفريغ المحتوى الثابت إلى CDN، يمكنك تقليل الحمل على الخادم الخاص بك وتحسين أوقات الاستجابة للمستخدمين في جميع أنحاء العالم بشكل كبير.
تأكد من أنك تستخدم PHP-FPM (مدير عمليات FastCGI)، والذي تم تحسينه بشكل أفضل للبيئات عالية التحميل:
sudo apt install php8.2-fpm
يمكنك ضبط إعدادات PHP-FPM للتعامل مع المزيد من الطلبات بكفاءة عن طريق ضبط إعداداتpm.max_children وpm.start_servers وpm.min_spare_servers وpm.max_spare_servers في ملف تكوين تجمع PHP-FPM.
تحرير ملف تكوين التجمع:
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
زيادةpm.max_children بناءً على الذاكرة المتوفرة وحركة المرور:
pm.max_children = 50 pm.start_servers = 10 pm.min_spare_servers = 5 pm.max_spare_servers = 20
أعد تشغيل PHP-FPM وNginx:
sudo systemctl restart php8.2-fpm sudo systemctl restart nginx
يسمح PHP-FPM لعمليات PHP الخاصة بك بمعالجة المزيد من الطلبات المتزامنة بكفاءة، مما يقلل وقت استجابة الخادم في ظل التحميل الثقيل.
يؤدي تصغير ملفات CSS وJavaScript وHTML عن طريق إزالة المسافات البيضاء والتعليقات غير الضرورية إلى تقليل حجم الملف.
استخدم أدوات مثل Laravel Mix أو Gulp:
npm install laravel-mix --save-dev
مثال لملف webpack.mix.js لـ Laravel:
const mix = require('laravel-mix'); mix.js('resources/js/app.js', 'public/js') .sass('resources/sass/app.scss', 'public/css') .minify('public/js/app.js') .minify('public/css/app.css');
في ملف تكوين Nginx، قم بإضافة التخزين المؤقت للأصول الثابتة:
location ~* \.(css|js|jpg|jpeg|png|gif|ico|woff|woff2)$ { expires 1y; access_log off; add_header Cache-Control "public"; }
يؤدي تصغير الأصول وتجميعها، إلى جانب تمكين التخزين المؤقت للمتصفح، إلى تقليل حجم ملفاتك وتقليل أوقات التحميل، مما يؤدي إلى تطبيق أسرع.
لتثبيت Redis:
sudo apt install redis-server
في Laravel، افتح ملف .env وقم بتكوين Redis كمحرك ذاكرة التخزين المؤقت:
CACHE_DRIVER=redis
استخدم التخزين المؤقت للاستعلام لتسريع استعلامات قاعدة البيانات المتكررة:
$users = Cache::remember('users', 60, function() { return DB::table('users')->get(); });
من خلال التخزين المؤقت لاستعلامات قاعدة البيانات، يمكنك تقليل تحميل قاعدة البيانات وتحسين أوقات الاستجابة بشكل كبير للبيانات التي يتم الوصول إليها بشكل متكرر.
تحسين أدوات التحميل التلقائي للملحن للإنتاج:
composer install --optimize-autoloader --no-dev
في Laravel، قم بتعطيل أي موفري خدمة غير مستخدمين في config/app.php لتقليل استخدام الذاكرة وتسريع وقت تشغيل التطبيق.
يعمل تحسين التحميل التلقائي على تجميع خرائط الفصل، مما يجعل تحميل الفصل أسرع. يؤدي تعطيل الخدمات غير المستخدمة إلى مساعدة التطبيق على استخدام موارد أقل.
قم بتثبيت Laravel Telescope لتعريف تطبيقك:
composer require laravel/telescope php artisan telescope:install php artisan migrate php artisan serve
يمكنك دمج أدوات الطرف الثالث مثل New Relic أو Blackfire لتحليل اختناقات التطبيقات، وأداء قاعدة البيانات، والمزيد.
تساعد أدوات المراقبة والتوصيف في تحديد الاستعلامات البطيئة، وتسرب الذاكرة، والاختناقات في تطبيق PHP الخاص بك، مما يسمح لك بإصلاح مشكلات الأداء بشكل استباقي.
باتباع هذه الخطوات، يمكنك تحسين أداء تطبيق PHP الخاص بك بشكل ملحوظ. بدءًا من تحديث PHP وتمكين التخزين المؤقت لـ Opcode وحتى تحسين استعلامات قاعدة البيانات وتكوين PHP-FPM، تساهم كل خطوة في تطبيق أكثر استجابة وقابلية للتطوير.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3