العودة إلى المدونة
يناير 13, 2026الأدلة

كيفية تكوين PHP-FPM للحصول على الأداء الأمثل

دليل كامل حول تكوين إعدادات مجمع PHP-FPM، وضبط الأداء، والتكامل مع Nginx.

كيفية تكوين PHP-FPM للحصول على الأداء الأمثل

PHP-FPM (FastCGI Process Manager) هو تطبيق بديل لـ PHP FastCGI مع ميزات إضافية مفيدة لمواقع الويب ذات حركة المرور العالية. يمكن أن يؤدي التكوين الصحيح إلى تحسين أداء خادمك واستخدام الموارد بشكل كبير.

تثبيت PHP-FPM

bash
# Ubuntu/Debian
sudo apt update
sudo apt install php-fpm php-mysql php-mbstring php-xml php-curl -y

# CentOS/RHEL
sudo yum install php-fpm php-mysql php-mbstring php-xml php-curl -y

# بدء وتمكين PHP-FPM
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

تكوين مجمع PHP-FPM (Pool)

قم بتحرير ملف تكوين المجمع لتحسين الأداء:

bash
sudo nano /etc/php/8.1/fpm/pool.d/www.conf

# الإعدادات الرئيسية:
user = www-data
group = www-data
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data

# إدارة العمليات
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 500

ضبط الأداء

تحسين PHP-FPM لموارد خادمك:

bash
# حساب max_children الأمثل:
# (إجمالي الذاكرة - الخدمات الأخرى) / (الذاكرة لكل عملية PHP)
# مثال: (2GB - 500MB) / 50MB = 30 max_children

# تحرير php.ini لأداء أفضل
sudo nano /etc/php/8.1/fpm/php.ini

# الإعدادات الموصى بها:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M

# إعادة تشغيل PHP-FPM
sudo systemctl restart php-fpm

تكوين Nginx

تكوين Nginx للعمل مع PHP-FPM:

bash
sudo nano /etc/nginx/sites-available/yourdomain.com

# أضف معالجة PHP:
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

# اختبار وإعادة تحميل Nginx
sudo nginx -t
sudo systemctl reload nginx

مراقبة PHP-FPM

bash
# التحقق من حالة PHP-FPM
sudo systemctl status php-fpm

# عرض عمليات PHP-FPM
ps aux | grep php-fpm

# التحقق من حالة المجمع (إذا تم تمكين صفحة الحالة)
curl http://localhost/status

# عرض السجلات
sudo tail -f /var/log/php8.1-fpm.log

نصائح تحسين PHP-FPM

  • اضبط pm.max_children بناءً على ذاكرة الوصول العشوائي المتاحة
  • استخدم pm = dynamic لمعظم حالات الاستخدام
  • تعيين pm.max_requests لمنع تسرب الذاكرة
  • تمكين opcache لأداء أفضل
  • مراقبة حالة PHP-FPM بانتظام
  • استخدم مجمعات منفصلة لتطبيقات مختلفة
  • حافظ على تحديث PHP و PHP-FPM