كيفية تفعيل وحدة Swoole في PHP عبر ServBay
ServBay هو بيئة تطوير ويب محلية قوية تأتي مزودة بالعديد من الأدوات والإضافات التي يحتاجها المطورون، ومن ضمنها إضافة Swoole PHP عالية الأداء. تعد Swoole محرك تواصل شبكي غير متزامن وعالي الأداء وموازي صُمم خصيصًا للـ PHP، ويمكنه تحسين أداء تطبيقات PHP وقابليتها للتوسعة بشكل ملحوظ. في هذا الدليل سنوضح بالخطوات كيفية تفعيل إضافة Swoole بسهولة في ServBay لمساعدتك على بناء تطبيقات وخدمات PHP أكثر كفاءة باستخدام إمكانياتها القوية.
حول إطار عمل Swoole
Swoole هو مشروع مفتوح المصدر يزود PHP بميزات متقدمة شبيهة بـ Node.js مثل I/O غير المتزامن، وكوروتينات، وتعدد العمليات. عبر Swoole يمكن لمطوري PHP التخلص من نمط الحظر المتزامن لخوادم الويب التقليدية (مثل Apache/Nginx + PHP-FPM) وبناء خدمات مقيمة في الذاكرة عالية الأداء مثل:
- بوابات API عالية الأداء
- تطبيقات الاتصال الفوري (WebSocket)
- خوادم الألعاب
- تطبيقات إنترنت الأشياء (IoT)
- خدمات خلفية ومعالجة المهام
أبرز ميزات Swoole
- أداء عالي: يعتمد على استدعاءات نظام مثل epoll/kqueue لتنفيذ I/O غير حظري وغير متزامن، مع دعم للخيوط/العمليات المتعددة والكوروتينات، ويوفر معدل نقل عالي وانخفاض في التأخير.
- البرمجة غير المتزامنة والكوروتينات: يتيح كتابة الكود غير المتزامن بطريقة متزامنة بفضل دعم الكوروتينات مما يزيد من كفاءة التطوير.
- مكونات غنية: يحتوي على خوادم وبرمجيات HTTP وWebSocket وTCP وUDP متكاملة، بالإضافة إلى مرافق مثل تجمعات الاتصالات، ومؤقتات، وإدارة العمليات.
- سهل الدمج: يمكن دمجه بسهولة مع أطر العمل الشائعة مثل Laravel, Symfony, ThinkPHP أو استخدامه لبناء تطبيقات Swoole أصلية جديدة.
دعم وحدة Swoole في ServBay
يأتي ServBay مزودًا بإضافة Swoole لكل إصدار من إصدارات PHP المتاحة، فلا حاجة لتنزيلها أو تثبيتها يدوياً؛ حيث يدير ServBay توافق إصدارات Swoole مع كل إصدار PHP تلقائيًا.
حاليًا، يدعم ServBay تفعيل إضافة Swoole للإصدارات التالية من PHP:
- PHP 5.6
- سلسلة PHP 7.x
- سلسلة PHP 8.x (بما في ذلك PHP 8.5)
سيطابق ServBay تلقائيًا بين إصدار PHP الذي اخترته وإصدار Swoole المناسب ويزودهما معًا.
المتطلبات الأساسية
قبل تفعيل وحدة Swoole، تأكد من:
- أنك قمت بتثبيت وتشغيل ServBay بنجاح.
- قمت بتثبيت واختيار إصدار PHP الذي ترغب باستخدام Swoole عليه داخل ServBay.
خطوات تفعيل وحدة Swoole
يمكنك تفعيل Swoole عبر واجهة ServBay الرسومية أو عن طريق تعديل ملفات الإعداد يدويًا. نوصي باستخدام الطريقة الرسومية لسهولتها ووضوحها.
تفعيل Swoole عبر واجهة ServBay الرسومية (موصى به)
هذه هي أسهل وأسرع طريقة لتفعيل وحدة Swoole:
- افتح واجهة مستخدم ServBay الرسومية.
- من شريط التنقل الأيسر، اختر اللغات (Languages).
- انقر على PHP.
- من قائمة إصدارات PHP على اليمين، حدد الإصدار الذي ترغب بتفعيل Swoole عليه (مثال:
PHP 8.3
) وتأكد أن الدائرة بجانبه خضراء. - انقر على زر الإضافات (Extensions) بجانب إصدار PHP المحدد.
- في القائمة المنبثقة، ابحث عن إضافة swoole.
- حرّك زر التبديل بجانب إضافة swoole لجعله نشطًا (يصبح الزر أخضر).
- اضغط على زر حفظ (Save) أو تطبيق (Apply) في أسفل النافذة.
- سيُطلب منك إعادة تشغيل خدمة PHP المعنية لتحميل الإضافة الجديدة. اضغط على زر إعادة تشغيل (Restart).
بعد اكتمال إعادة التشغيل، ستكون وحدة Swoole مفعلة وجاهزة للاستخدام.
تفعيل Swoole يدويًا عبر ملف الإعداد (متقدم)
إذا كنت بحاجة لتخصيص إعدادات متقدمة أو تفضل الإدارة اليدوية، يمكنك تفعيل Swoole عبر تحرير ملف ini الخاص بـ PHP.
انتقل إلى مجلد إعدادات conf.d الخاص بإصدار PHP المستهدف. هذا المجلد يحتفظ بملفات إعداد الإضافات، وتقوم ServBay بتحميل جميع ملفات .ini الموجودة به تلقائيًا. على سبيل المثال، لمسار PHP 8.3 غالبًا يكون:
/Applications/ServBay/etc/php/8.3/conf.d/
1ملاحظة: إذا قمت بتثبيت ServBay في مسار مخصص، عدّل المسار حسب الحاجة.
داخل هذا المجلد، ابحث وافتح ملف
swoole.ini
.افتراضيًا، قد تكون السطر الخاص بتحميل Swoole معطلة عبر التعليق (
;
). ابحث عن السطر:ini[Swoole] ; Uncomment the following line to enable Swoole ;extension = swoole.so
1
2
3احذف رمز التعليق
;
من أمام السطرextension = swoole.so
لتفعيله:ini[Swoole] ; Uncomment the following line to enable Swoole extension = swoole.so
1
2
3احفظ الملف.
من الواجهة الرئيسية أو لوحة إدارة الخدمات لبرنامج ServBay، حدد خدمة PHP المقابلة واضغط إعادة التشغيل.
بعد إعادة التشغيل، سيقوم PHP بتحميل وحدة Swoole بنجاح حسب تفعيلك في الإعداد.
التأكد من تفعيل وحدة Swoole بنجاح
الطريقة الأكثر شيوعًا للتحقق هي استخدام دالة phpinfo()
لمعرفة الإضافات المحملة في PHP.
- انتقل إلى مجلد الموقع التابع لبرنامج ServBay (مثل:
/Applications/ServBay/www/servbay.demo/public/
) وأنشئ ملف باسمphpinfo.php
. - أضف الكود التالي بداخله:php
<?php phpinfo(); ?>
1
2
3 - تأكد أن موقع
servbay.demo
مضبوط في ServBay ويوجه لهذا المجلد. - من المتصفح، زر رابط الملف مثل
https://servbay.demo/phpinfo.php
. - ابحث داخل صفحة phpinfo عن كلمة "swoole" (بالتمرير أو باستخدام البحث Ctrl+F/Cmd+F).
إذا ظهرت معلومات Swoole، كرقم الإصدار وخيارات الإعداد، فهذا يعني أن الوحدة قد تم تحميلها وتفعيلها بنجاح.
توضيح: البحث عن معلومات Swoole في صفحة phpinfo
مثال على استخدام Swoole
بعد تفعيل وحدة Swoole يمكنك البدء في برمجة تطبيقات Swoole. فيما يلي مثال بسيط لإنشاء خادم HTTP باستخدام Swoole.
كود المثال: إنشاء خادم HTTP بسيط عبر Swoole
إنشاء مجلد المشروع من مجلد التطوير لديك (مثل
/Applications/ServBay/www/
)، أنشئ مجلد جديد وليكنmy-swoole-app
، ثم أنشئ بداخله مجلدpublic
ليكون مدخل التطبيق.bashcd /Applications/ServBay/www/ mkdir my-swoole-app cd my-swoole-app mkdir public
1
2
3
4أنشئ ملف الدخول للخادم
public/index.php
php<?php require __DIR__ . '/../vendor/autoload.php'; // إذا كنت تستخدم Composer لتثبيت اعتمادات أخرى use Swoole\Http\Server; use Swoole\Http\Request; use Swoole\Http\Response; // إنشاء كائن الخادم HTTP ليستمع لجميع عناوين IP المحلية (0.0.0.0) على المنفذ 9501 $server = new Server("0.0.0.0", 9501); // إعداد خيارات الخادم (اختياري) // $server->set([ // 'worker_num' => 4, // عدد عمليات العمل // 'daemonize' => false, // هل يعمل كخدمة في الخلفية // ]); // الاستماع لحدث الطلبات $server->on("request", function (Request $request, Response $response) { // تعيين ترويسة الاستجابة $response->header("Content-Type", "text/plain"); // تعيين محتوى الاستجابة $response->end("Hello ServBay with Swoole!"); }); // الاستماع لحدث بدء الخادم (اختياري) $server->on("start", function (Server $server) { echo "Swoole http server is started at http://0.0.0.0:9501\n"; }); // بدء الخادم $server->start(); echo "Swoole server stopped.\n"; // يتم تنفيذ هذا السطر فقط بعد توقف الخادم
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35ملاحظة: السطر
require __DIR__ . '/../vendor/autoload.php';
مطلوب فقط إذا كنت تستخدم Composer لتثبيت مكتبات Swoole الإضافية (مثلswoole/ide-helper
أو أطر عمل Swoole). أما في كود Swoole الأصلي البحت، غالبًا لا تحتاج إلى ملفautoload.php
ويمكنك حذفه.تشغيل الخادم من سطر الأوامر افتح الطرفية (Terminal) في ServBay أو من النظام وادخل مجلد المشروع (
/Applications/ServBay/www/my-swoole-app/
). تأكد أن الطرفية تستخدم إصدار PHP الذي يديره ServBay (تحقق عبر الأمرwhich php
أو باستخدام طرفية ServBay).شغل الأمر التالي لتشغيل خادم Swoole:
shphp public/index.php
1إذا نجح التشغيل، سترى رسالة في الطرفية شبيهة بـ "Swoole http server is started at http://0.0.0.0:9501".
توضيح: تشغيل خادم Swoole في الطرفية
اختبار الوصول بعد تشغيل الخادم، افتح المتصفح وادخل الرابط
http://localhost:9501
ويجب أن ترى عبارة "Hello ServBay with Swoole!" معروضة على الصفحة.لإيقاف الخادم، اضغط
Ctrl + C
في الطرفية.
ملاحظات مهمة
- طريقة التشغيل: المثال أعلاه يوضح تشغيل خادم Swoole كخدمة مستقلة من الطرفية، وهي أنسب للحلول المعتمدة على عمليات مقيمة بالذاكرة. أما تطبيقات الويب الكلاسيكية (مثل Laravel/Symfony/WordPress) فتعمل غالبًا تحت وضعية PHP-FPM مع وكلاء مثل Caddy أو Nginx. إذا رغبت بتشغيل هذه الأطر تحت بيئة Swoole (مثل Hyperf أو Swoole-Laravel) عادة ما تحتاج لسكربتات تشغيل مخصصة، وغالبًا يتم تشغيلها كعمليات منفصلة مثل مثال Swoole الأصلي.
- إشغال المنفذ: يستخدم Swoole منفذًا محددًا (مثلاً 9501)، تأكد من عدم إشغال هذا المنفذ بواسطة برامج أخرى.
- سجلات الأخطاء: تظهر عادة سجلات Swoole وأخطاءه مطبوعة في الطرفية عند التشغيل أو يمكن إعادة توجيهها لملفات حسب الإعدادات.
الأسئلة الشائعة (FAQ)
س: فعّلت Swoole من واجهة ServBay لكن لم تظهر معلومات Swoole في صفحة phpinfo()
، ماذا أفعل؟
ج: تحقق مما يلي:
- تأكد أنك تفحص صفحة
phpinfo()
لإصدار PHP الصحيح. قد يكون لديك عدة إصدارات PHP نشطة عبر ServBay، تأكد أنك تصل إلى الموقع أو تشغل الأمر على الإصدار الذي فعلت عليه Swoole. - تأكد من حفظ الإعدادات وإعادة تشغيل خدمة PHP المطلوبة من واجهة ServBay.
- إذا عدلت ملف
swoole.ini
يدويًا، تحقق من صحة المسار واسم الملف وخطextension = swoole.so
وأنه غير معطل بالتعليق.
س: لماذا تظهر لي رسالة الخطأ Class 'Swoole\Http\Server' not found
عند تشغيل مثال Swoole؟
ج: هذا يشير عادة إلى أن إضافة Swoole غير مفعلة في بيئة PHP الحالية. أعد التأكد من تفعيل الوحدة حسب التعليمات، وتأكد أنك تستخدم الأمر php public/index.php
من طرفية ServBay وبإصدار PHP المفعّل عليه Swoole. يمكنك التحقق السريع عبر الأمر php -m | grep swoole
لرؤية ما إذا تم تحميل إضافة Swoole في نسخة PHP المستخدمة.
الخلاصة
أصبح تفعيل إضافة Swoole في PHP عبر ServBay سهلاً للغاية. سواءً استخدمت الواجهة الرسومية المباشرة أو التعديل اليدوي لملفات الإعداد، يستطيع المطورون بسرعة تحميل وحدة Swoole للإصدار المرغوب من PHP وبدء تطوير تطبيقات ويب عالية الأداء وغير متزامنة. بفضل إمكانيات Swoole الكبيرة، يمكنك بسهولة بناء خدمات PHP أكثر استجابة وقوة في معالجة المهام المتزامنة، وتستفيد من كل قدرات PHP الحديثة في تطوير الويب. وفر ServBay إدارة سهلة للبيئة البرمجية كي تركز على الكود لا على إعداد البيئة.