Posted in

📚FrankenPHP در برابر PHP-FPM

سال‌هاست ترکیب Nginx + PHP-FPM گزینهٔ استاندارد برای اجرای PHP محسوب می‌شود؛ ترکیبی پایدار، قابل‌اعتماد و امتحان‌پس‌داده. به همین دلیل بسیاری از توسعه‌دهندگان معمولاً با احتیاط به سراغ تکنولوژی‌های جدید می‌روند، مخصوصاً وقتی پای زیرساخت و سرو کردن درخواست‌ها در میان باشد.

FrankenPHP چیست؟

FrankenPHP یک وب‌سرور و محیط اجرای PHP است که همه‌چیز را در یک برنامهٔ واحد ارائه می‌دهد. در این مدل:

  • نیازی به Nginx یا Apache نیست
  • PHP-FPM و FastCGI حذف می‌شوند
  • پردازش درخواست‌ها مستقیماً داخل خود FrankenPHP انجام می‌شود

این طراحی شباهت زیادی به معماری Node.js دارد:
لایه‌های کمتر، پیچیدگی کمتر، سرعت بیشتر.

نتیجه این است که راه‌اندازی ساده‌تر می‌شود و عملکرد خام سیستم به شکل قابل‌توجهی افزایش پیدا می‌کند.

روش آزمایش

برای مقایسهٔ دقیق FrankenPHP و PHP-FPM، هر دو روی یک محیط یکسان تست شده‌اند:

  • PHP نسخه 8.4
  • کانتینرهای Docker
  • سرور با 6 vCPU و 4GB RAM

اسکریپت تست فقط یک فایل بسیار ساده PHP بوده است:

<?php
echo "Hello from server";

سه ابزار بنچمارک نیز مورد استفاده قرار گرفته‌اند:

  • wrk → سنجش بیشترین مقدار درخواست در ثانیه
  • wrk2 → بررسی پایداری تحت فشار ثابت
  • k6 → شبیه‌سازی رفتار کاربران واقعی

تمام تست‌ها چندین بار تکرار شده‌اند تا نتایج دقیق و بدون نویز باشند.

نتایج بنچمارک

۱. نتیجهٔ تست wrk — حداکثر سرعت

اختلاف عملکرد در این بخش بسیار چشمگیر بوده است:

  • FrankenPHP: حدود ۱۵,۰۰۰ درخواست در ثانیه
  • PHP-FPM: حدود ۴,۰۰۰ درخواست در ثانیه

این اعداد نشان می‌دهد که FrankenPHP تقریباً ۴ برابر سریع‌تر عمل کرده است.
میانگین «تأخیر» نیز در FrankenPHP حدود نصف PHP-FPM بوده است.


۲. نتیجهٔ تست wrk2 — پایداری در فشار ثابت

در تستی با بار ثابت ۵۰۰۰ درخواست در ثانیه:

  • PHP-FPM نتوانسته تمام درخواست‌ها را پاسخ دهد و تعداد زیادی خطا و تأخیر بالا ثبت شده است.
  • FrankenPHP تقریباً تمام درخواست‌ها را با تأخیر حدود ۱.۴ میلی‌ثانیه به‌طور پایدار پاسخ داده است.

در این مرحله، FrankenPHP عملکردی «کاملاً مسلط» داشته است.


۳. نتیجهٔ تست k6 — شبیه‌سازی کاربران واقعی

در یک سناریوی واقعی‌تر با ۱۰۰ کاربر مجازی:

  • میانگین تأخیر PHP-FPM حدود ۲.۵ میلی‌ثانیه
  • میانگین تأخیر FrankenPHP کمتر و در حدود ۲ میلی‌ثانیه

اگرچه در این بخش اختلاف‌ها نزدیک‌تر بوده‌اند، اما FrankenPHP همچنان سریع‌تر و قابل‌اعتمادتر عمل کرده است.


جمع‌بندی: کدام یک انتخاب بهتر است؟

براساس نتایج، یک نکته کاملاً مشخص می‌شود:

FrankenPHP در بیشتر تست‌ها برندهٔ واضح است.

اما تصمیم نهایی بستگی به نوع پروژه دارد:

زمان‌هایی که FrankenPHP انتخاب بهتری است:

  • پروژه‌های جدید
  • سرویس‌های API
  • میکروسرویس‌ها
  • سیستم‌های سبک و stateless
  • نیاز به عملکرد بسیار بالا و پیکربندی ساده

زمان‌هایی که PHP-FPM هنوز انتخاب امن‌تری است:

  • پروژه‌های بزرگ و قدیمی (Legacy)
  • سیستم‌هایی با پیکربندی پیچیده‌ی موجود
  • اپلیکیشن‌هایی که برای سال‌ها روی FPM پایدار بوده‌اند

نتیجهٔ نهایی

FrankenPHP نشان داده که می‌تواند فصل جدیدی در نحوهٔ اجرای PHP باشد:
ساده‌تر، سریع‌تر و آینده‌دارتر.

برای پروژه‌های جدید، انتخاب بسیار مناسبی است.
اما برای سیستم‌های بزرگِ موجود، مهاجرت باید با دقت و آزمایش انجام شود.

یک توسعه‌دهنده و مدیر زیرساخت که در زمینه سرورها، شبکه، اسکریپت‌های خودکارسازی و ربات‌های هوش مصنوعی هستم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *