Laravel Octane يَعِد بمضاعفة أداء تطبيقك، لكن السؤال الذي يحيّر المطوّرين: أيّ محرّك تختار — FrankenPHP أم Swoole أم RoadRunner؟ الإجابات على الإنترنت غالباً نظرية أو منقولة من التوثيق. لذلك فعلنا الأصعب: شغّلنا نفس تطبيق Laravel على كل محرّك من الثلاثة على خادم VPS واحد من مرام، وقِسنا الإنتاجية (Requests/sec) وزمن الاستجابة (Latency) واستهلاك الذاكرة (RAM) بأرقام حقيقية. هذا بنشمارك أصلي — لا إعادة صياغة توثيق — والنتائج فيها مفاجآت.

Laravel Octane: مقارنة محرّكات FrankenPHP وSwoole وRoadRunner
ثلاثة محرّكات لتشغيل Laravel Octane، اختبار أداء حقيقي واحد على خادم مرام.

ما هو Laravel Octane؟

في الوضع التقليدي (PHP-FPM)، يُقلع إطار Laravel من الصفر في كل طلب: تحميل الملفات، تسجيل الخدمات، بناء الحاوية — ثم يُدمَّر كل شيء بعد الاستجابة. Laravel Octane يغيّر هذا جذرياً: يُقلع التطبيق مرة واحدة ويبقيه حيّاً في الذاكرة، فيخدم آلاف الطلبات دون إعادة إقلاع. النتيجة قفزة كبيرة في الأداء — لكنها تتطلّب محرّك تطبيقات دائم التشغيل، وهنا تأتي الخيارات الثلاثة.

المحرّكات الثلاثة

يدعم Octane ثلاثة محرّكات، لكلٍّ فلسفته:

  • Swoole: امتداد PHP مكتوب بلغة C، عالي الأداء، يدير عمّالاً في الذاكرة (ويوفّر ميزات إضافية كالمؤقّتات والطوابير).
  • FrankenPHP: خادم تطبيقات حديث مبني على خادم Caddy (بلغة Go)، يدمج PHP داخله ويدعم HTTP/2 وHTTP/3 وworker mode.
  • RoadRunner: خادم تطبيقات مكتوب بلغة Go، يدير عمّال PHP عبر بروتوكول خاص، معروف بالثبات في بيئات الإنتاج.

منهجية الاختبار (شفافية)

حرصاً على عدالة المقارنة، ثبّتنا المتغيّرات كلها:

  • نفس التطبيق: تطبيق Laravel واحد على PHP 8.4 مع OPcache مفعّل.
  • نفس الخادم: VPS واحد من مرام (Ubuntu 24.04).
  • نفس القياس: أداة ApacheBench بالأمر ab -n 5000 -c 50 بعد إحماء، و4 عمّال لكل محرّك.
  • نفس المرجع: أضفنا خطّ أساس PHP-FPM لرؤية قفزة Octane نفسها.
# تثبيت Octane واختيار المحرّك
composer require laravel/octane
php artisan octane:install --server=frankenphp   # أو swoole أو roadrunner

# التشغيل ثم القياس
php artisan octane:start --server=frankenphp --workers=4
ab -n 5000 -c 50 -k http://127.0.0.1:8000/

نتائج Laravel Octane: الإنتاجية

أول ما يلفت النظر: كل محرّكات Octane تتفوّق على PHP-FPM في الإنتاجية:

مقارنة إنتاجية Laravel Octane: Swoole وFrankenPHP وRoadRunner مقابل PHP-FPM
Swoole 1153 وFrankenPHP 1093 وRoadRunner 761 مقابل PHP-FPM 557 طلب/ثانية.

تصدّر Swoole بـ1153 طلب/ثانية (نحو 2.1× مقابل FPM)، تلاه FrankenPHP عن قرب بـ1093 (2.0×)، ثم RoadRunner بـ761 (1.4×). خطّ الأساس PHP-FPM سجّل 557. الرسالة واضحة: Octane يستحق العناء لأي تطبيق أو API عالي الحركة.

النتائج الكاملة: الزمن والذاكرة

لكن الإنتاجية وحدها تخدع. الصورة الكاملة تظهر حين نضيف زمن الاستجابة عند الذيل (p99) واستهلاك الذاكرة:

النتائج الكاملة لبنشمارك Laravel Octane: الإنتاجية والزمن والذاكرة
جدول شامل: Swoole الأسرع والأخفّ، FrankenPHP الأثبت زمناً، RoadRunner الأثقل ذاكرة.

هنا تنقلب بعض الأمور: Swoole الأسرع لكن زمن الذيل عنده الأعلى (p99 يقفز إلى 211ms)، بينما FrankenPHP يقدّم أثبت زمن استجابة (p99 = 90ms فقط) مع إنتاجية قريبة جداً. أما RoadRunner فاستهلك أكثر ذاكرة (362MB). لنحلّل كلاً على حدة.

تحليل: Swoole

Swoole هو بطل الأرقام الخام: أعلى إنتاجية (1153 طلب/ثانية) وأخفّ استهلاك ذاكرة على الإطلاق (62MB فقط لأربعة عمّال). لكن لاحظنا تذبذباً في زمن الاستجابة عند الضغط العالي (p99 = 211ms)، ما يعني قفزات تأخّر عرضية. Swoole مثالي حين تكون الإنتاجية القصوى وكفاءة الذاكرة أولويتك، وتطبيقك يتحمّل تذبذباً بسيطاً في الذيل.

تحليل: FrankenPHP

FrankenPHP كان مفاجأة هذا الاختبار: إنتاجية شبه مطابقة لـSwoole (1093 طلب/ثانية)، لكن بأفضل ثبات في زمن الاستجابة (p99 = 90ms — الأدنى بين الجميع) واستهلاك ذاكرة معتدل (205MB). أضِف إلى ذلك أنه خادم حديث كامل يدعم HTTP/2 وHTTP/3 وسهل النشر. لمعظم التطبيقات، FrankenPHP يقدّم أفضل توازن بين السرعة والثبات والحداثة.

اقرأ أيضاً: أسرع إعداد Laravel على VPS: PHP 8.4 وOPcache وRedis

تحليل: RoadRunner

RoadRunner جاء الأبطأ في هذا الإعداد (761 طلب/ثانية) والأثقل ذاكرة (362MB)، لكن مع زمن استجابة متماسك (p99 = 119ms). من الإنصاف القول إن RoadRunner قابل للضبط بعمق، وأداؤه يتحسّن مع تحسين إعداداته وعدد العمّال؛ وقوّته الحقيقية في الثبات وبيئة Go والتكامل مع أنظمة معقّدة. في اختبارنا بالإعداد الافتراضي، تخلّف عن منافسيه.

⚠️ الأرقام قِيست على مسار Laravel الافتراضي (يقيس سرعة الإطار). التطبيقات الحقيقية بقواعد بيانات ومنطق أعمال قد تُظهر نسباً مختلفة. والأهمّ: Octane يبقي التطبيق في الذاكرة، فاحرص أن يكون كودك «آمناً للحالة» (بلا تسريب حالة ثابتة بين الطلبات).

أيّ محرّك تختار؟

لا يوجد فائز مطلق في Laravel Octane — الاختيار حسب أولويتك:

  • تريد أقصى إنتاجية وأخفّ ذاكرة؟ Swoole.
  • تريد أفضل توازن وثبات زمن وحداثة؟ FrankenPHP (خيارنا الافتراضي الموصى به لمعظم الحالات).
  • تعمل ضمن بيئة Go أو تحتاج ضبطاً عميقاً؟ RoadRunner.
  • تطبيق بسيط أو حركة منخفضة؟ PHP-FPM يكفي — لا تعقّد ما لا يحتاج تعقيداً.
اقرأ أيضاً: كيف تنشر مشروع Laravel على VPS من الصفر إلى Production؟

الخلاصة

أثبت اختبارنا الحقيقي أن Laravel Octane يضاعف الأداء فعلاً (حتى 2.1× مقابل PHP-FPM)، وأن اختيار المحرّك مقايضة لا مفاضلة مطلقة: Swoole للسرعة والكفاءة، FrankenPHP للتوازن والثبات، RoadRunner للثبات ضمن بيئة Go. نصيحتنا: ابدأ بـFrankenPHP لمعظم المشاريع، وقِس تطبيقك أنت على محرّكين قبل الحسم — فالأرقام النهائية تعتمد على كودك وحملك. الأرقام هنا مقاسة على عتاد مرام فعلياً، لتثق بها. للتعمّق راجع توثيق Laravel Octane الرسمي.

من واقع مرام

نشغّل ونقيس هذه المحرّكات على خوادمنا فعلياً — لا ننقل أرقاماً من مكان آخر. إن أردت تشغيل Octane على مشروعك، نساعدك في اختيار المحرّك وضبط العمّال وSupervisor على VPS من مرام، بأداء NVMe ودعم عربي يفهم Laravel.

ضاعف أداء تطبيقك مع Octane

خوادم VPS من مرام جاهزة لـLaravel Octane — بيئة محسّنة ودعم تقني عربي حقيقي.

شغّل Octane على VPS مرام ←