إنشاء وتشغيل مشروع Workerman
ما هو Workerman؟
Workerman هو مكتبة تواصل بالشبكة غير متزامنة وعالية الأداء لـPHP، مصمم خصيصًا لتطوير تطبيقات شبكة عالية التوازي والأداء. يمكن استخدامه لبناء خوادم الويب، خوادم WebSocket، خوادم TCP/UDP، وغيرها، وهو مناسب للمحادثات المباشرة، خوادم الألعاب، وإنترنت الأشياء. يتميز Workerman بخفة وزنه وسهولة استخدامه وكفاءته، مما يتيح للمطورين تنفيذ تطبيقات الشبكة المعقدة بسهولة.
الميزات الرئيسية والمزايا لـ Workerman
- عالي الأداء: يعتمد على تشغيل الأحداث وعدم حجب الإدخال/الإخراج، مما يمكنه من معالجة عدد كبير من الاتصالات المتزامنة.
- دعم عدة بروتوكولات: يدعم بروتوكولات الشبكة المتعددة مثل HTTP، WebSocket، TCP، UDP.
- سهولة الاستخدام: يوفر API بسيطة وسهلة الاستخدام تمكّن المطورين من البدء بسرعة.
- التوسع المرن: يمكن توسيعه عبر الملحقات والإضافات لتحقيق وظائف أكثر.
- دعم مجتمعي قوي: يمتلك مجتمع مطورين نشط ومصادر وثائقية متنوعة.
يمكن Workerman المطورين من بناء تطبيقات الشبكة عالية الأداء بسرعة، وهو مناسب لمختلف السيناريوهات التي تتطلب معالجة توازي عالية.
إنشاء وتشغيل خادم ويب بسيط باستخدام Workerman
في هذه المقالة، سنتناول كيفية استخدام Workerman لإنشاء وتشغيل خادم ويب بسيط في بيئة ServBay. سنعرض كيفية تثبيت Workerman، كتابة كود الخادم الأساسي، وتشغيل الخادم.
::: نصيحة تنصح ServBay المطورين بوضع مواقعهم في المجلد /Applications/ServBay/www
لتسهيل الإدارة. :::
تثبيت Workerman
تثبيت Composer
يأتي ServBay مع Composer مرفق مسبقًا، لذلك ليس هناك حاجة لتثبيته بشكل منفصل.
إنشاء مجلد المشروع
إنشاء مجلد مشروع جديد والدخول إلى المجلد:
bashcd /Applications/ServBay/www mkdir servbay-workerman-app cd servbay-workerman-app
1
2
3تثبيت Workerman
استخدام Composer لتثبيت Workerman:
bashcomposer require workerman/workerman
1
كتابة كود الخادم
في مجلد المشروع، أنشئ ملف اسمه server.php
وأضف الكود التالي:
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// إنشاء مثيل لخادم الويب، الاستماع على المنفذ 8080
$webServer = new Worker('http://0.0.0.0:8080');
// تشغيل 4 عمليات لمعالجة الطلبات
$webServer->count = 4;
// تحديد منطق معالجة الطلبات
$webServer->onMessage = function($connection, $request) {
$connection->send('Hello ServBay!');
};
// تشغيل كافة مثيلات Worker
Worker::runAll();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
تشغيل خادم الويب
في مجلد المشروع، قم بتشغيل الأمر التالي لبدء الخادم:
php server.php start
بعد التشغيل، يمكنك زيارة http://localhost:8080
في المتصفح وسترى الصفحة تعرض "Hello ServBay!".
إنشاء خادم WebSocket باستخدام Workerman
بالإضافة إلى خادم الويب، يمكن استخدام Workerman لإنشاء خادم WebSocket. التالي هو مثال بسيط لخادم WebSocket.
كتابة كود خادم WebSocket
في مجلد المشروع، أنشئ ملف اسمه
websocket_server.php
وأضف الكود التالي:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // إنشاء مثيل خادم WebSocket، الاستماع على المنفذ 8081 $wsServer = new Worker('websocket://0.0.0.0:8081'); // تشغيل 4 عمليات لمعالجة الطلبات $wsServer->count = 4; // تحديد منطق معالجة تأسيس الاتصال $wsServer->onConnect = function($connection) { echo "New connection\n"; }; // تحديد منطق معالجة استلام الرسائل $wsServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // تحديد منطق معالجة إنهاء الاتصال $wsServer->onClose = function($connection) { echo "Connection closed\n"; }; // تشغيل كافة مثيلات Worker Worker::runAll();
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تشغيل خادم WebSocket
في مجلد المشروع، قم بتشغيل الأمر التالي لبدء خادم WebSocket:
bashphp websocket_server.php start
1بعد التشغيل، يمكنك استخدام عميل WebSocket (مثل أدوات تصحيح WebSocket في المتصفح) للاتصال بـ
ws://localhost:8081
وإرسال الرسائل، وسوف يعيد الخادم إرسال الرسائل المستلمة.
إنشاء خادم TCP باستخدام Workerman
يمكن أيضًا استخدام Workerman لإنشاء خادم TCP. التالي هو مثال بسيط لخادم TCP.
كتابة كود خادم TCP
في مجلد المشروع، أنشئ ملف اسمه
tcp_server.php
وأضف الكود التالي:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // إنشاء مثيل خادم TCP، الاستماع على المنفذ 8082 $tcpServer = new Worker('tcp://0.0.0.0:8082'); // تشغيل 4 عمليات لمعالجة الطلبات $tcpServer->count = 4; // تحديد منطق معالجة تأسيس الاتصال $tcpServer->onConnect = function($connection) { echo "New connection\n"; }; // تحديد منطق معالجة استلام الرسائل $tcpServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // تحديد منطق معالجة إنهاء الاتصال $tcpServer->onClose = function($connection) { echo "Connection closed\n"; }; // تشغيل كافة مثيلات Worker Worker::runAll();
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تشغيل خادم TCP
في مجلد المشروع، قم بتشغيل الأمر التالي لبدء خادم TCP:
bashphp tcp_server.php start
1بعد التشغيل، يمكنك استخدام عميل TCP (مثل أوامر
telnet
أوnc
) للاتصال بـlocalhost:8082
وإرسال الرسائل، وسوف يعيد الخادم إرسال الرسائل المستلمة.
الخلاصة
من خلال الخطوات السابقة، نجحت في إنشاء وتشغيل مشروغ Workerman باستخدام ServBay، واستخدام وظائف Workerman لإنشاء خادم ويب، وخادم WebSocket، وخادم TCP. الأداء العالي وسهولة الاستخدام التي يوفرها Workerman تجعله مناسبًا جدًا لبناء تطبيقات الشبكة عالية الأداء والتوازي. نأمل أن تساعدك هذه المقالة على البدء سريعًا مع Workerman وتطبيقه في مشاريعك.