يناير 13, 2026الأدلة
كيفية تكوين PHP-FPM للحصول على الأداء الأمثل
دليل كامل حول تكوين إعدادات مجمع PHP-FPM، وضبط الأداء، والتكامل مع Nginx.

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