إنشاء وتشغيل مشروع Webman
ما هو Webman؟
Webman هو إطار عمل PHP غير متزامن عالي الأداء يعتمد على Workerman، تم تصميمه لبناء تطبيقات ويب ذات توافرية عالية وأداء عالي. بخلاف الأطر المتزامنة التقليدية، يعتمد Webman على I/O غير المحجوبة بالأحداث، مما يجعله يتفوق في التعامل مع العديد من الطلبات المتزامنة. يوفر Webman واجهة برمجة التطبيقات (API) بسيطة وسهلة الاستخدام وآلية توسعة مرنة، مما يجعله مناسبًا لإنشاء تطبيقات في الوقت الفعلي وخدمات API وغيرها.
الميزات الرئيسية والفوائد لـ Webman
- أداء عالي: يعتمد على I/O غير المحجوبة بالأحداث، يمكنه التعامل مع العديد من الطلبات المتزامنة.
- سهل الاستخدام: يوفر واجهة API بسيطة والعديد من الميزات، مما يتيح للمطورين الشروع في العمل بسرعة.
- دعم البروتوكولات المتعددة: يدعم بروتوكولات مثل HTTP و WebSocket، مما يجعله مناسبًا لمجموعة متنوعة من السيناريوهات.
- توسعة مرنة: يمكن توسيع قدراته باستخدام المكونات الإضافية (plugins) والوسطاء (middleware).
- دعم مجتمعي قوي: لديه مجتمع نشيط من المطورين وموارد وثائقية غنية.
يمكن لـ Webman مساعدة المطورين في بناء تطبيقات ويب وخدمات API عالية الأداء بسرعة، وهو مناسب للعديد من السيناريوهات التي تتطلب معالجة توافرية عالية.
استخدام Webman لإنشاء وتشغيل مشروع ويب بسيط
في هذه المقالة، سنشرح كيفية إنشاء وتشغيل مشروع ويب بسيط باستخدام Webman في بيئة ServBay. سنوضح كيفية تثبيت Webman، وكتابة أساسيات التوجيه وشفرة تحكم، وتشغيل المشروع.
::: نصيحة يقترح ServBay على المطورين وضع موقع الويب في المجلد /Applications/ServBay/www
لسهولة الإدارة. :::
تثبيت Webman
تثبيت Composer
يأتي ServBay مع Composer مثبت مسبقًا، لذلك لا توجد حاجة لتثبيته بشكل مستقل.
إنشاء دليل المشروع
انتقل إلى دليل www في ServBay:
bashcd /Applications/ServBay/www
1تثبيت Webman
استخدم Composer لتثبيت Webman:
bashcomposer create-project workerman/webman servbay-webman-app cd servbay-webman-app
1
2تثبيت المكونات الضرورية
تثبيت قاعدة البيانات Illuminate، الترقيم، الأحداث و Symfony VarDumper:
bashcomposer require -W illuminate/database illuminate/redis illuminate/pagination illuminate/events symfony/var-dumper
1
كتابة شفرة مشروع الويب
تكوين التوجيه
في ملف
config/route.php
أضف الشيفرة التالية لتعريف التوجيه الأساسي:phpuse Webman\Route; use app\controller\IndexController; use app\controller\CacheController; use app\controller\DatabaseController; Route::any('/', [IndexController::class, 'index']); Route::any('/memcached', [CacheController::class, 'memcached']); Route::any('/redis', [CacheController::class, 'redis']); Route::any('/mysql-add', [DatabaseController::class, 'mysqlAdd']); Route::any('/mysql', [DatabaseController::class, 'mysqlGet']); Route::any('/pgsql-add', [DatabaseController::class, 'pgsqlAdd']); Route::any('/pgsql', [DatabaseController::class, 'pgsqlGet']);
1
2
3
4
5
6
7
8
9
10
11
12إنشاء المتحكمات
في المجلد
app/controller
قم بإنشاء الملفاتIndexController.php
،CacheController.php
وDatabaseController.php
وإضافة الشيفرة التالية:ملف
IndexController.php
:phpnamespace app\controller; use support\Request; class IndexController { public function index(Request $request) { return response('Hello ServBay!'); } }
1
2
3
4
5
6
7
8
9
10
11ملف
CacheController.php
:phpnamespace app\controller; use support\Request; use support\Response; use Memcached; use support\Redis; class CacheController { public function memcached(Request $request): Response { $memcached = new Memcached(); $memcached->addServer('127.0.0.1', 11211); $memcached->set('key', 'Hello Memcached!', 60); $value = $memcached->get('key'); return response($value); } public function redis(Request $request): Response { Redis::set('key', 'Hello Redis!'); $value = Redis::get('key'); return response($value); } }
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ملف
DatabaseController.php
:phpnamespace app\controller; use support\Request; use support\Response; use support\Db; class DatabaseController { public function mysqlAdd(Request $request): Response { DB::connection('mysql')->table('users')->insert([ 'name' => 'Webman', 'email' => '[email protected]', ]); return response('User added'); } public function mysqlGet(Request $request): Response { $users = DB::connection('mysql')->table('users')->get(); return response(json_encode($users)); } public function pgsqlAdd(Request $request): Response { DB::connection('pgsql')->table('users')->insert([ 'name' => 'Webman', 'email' => '[email protected]', ]); return response('User added'); } public function pgsqlGet(Request $request): Response { $users = DB::connection('pgsql')->table('users')->get(); return response(json_encode($users)); } }
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
36
37
38تكوين الاتصال بقاعدة البيانات
في ملف
config/database.php
قم بتكوين معلومات الاتصال بـ MySQL و PostgreSQL:phpreturn [ 'default' => 'mysql', 'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => '127.0.0.1', 'port' => 3306, 'database' => 'webman_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], 'pgsql' => [ 'driver' => 'pgsql', 'host' => '127.0.0.1', 'port' => 5432, 'database' => 'webman_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', 'sslmode' => 'prefer', ], ], ];
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
تشغيل مشروع الويب
في دليل المشروع قم بتشغيل الأمر التالي لبدأ المشروع:
php start.php start
بعد البدء، يمكنك الوصول إلى عناوين URL التالية في المتصفح:
http://localhost:8787
: سترى الصفحة تعرضHello ServBay!
.http://localhost:8787/memcached
: سترى الصفحة تعرضHello Memcached!
.http://localhost:8787/redis
: سترى الصفحة تعرضHello Redis!
.http://localhost:8787/mysql-add
: سترى الصفحة تعرضUser added
وسيقوم بإضافة مستخدم إلى قاعدة البيانات.http://localhost:8787/mysql
: سترى قائمة المستخدمين الموجودة في قاعدة البيانات.http://localhost:8787/pgsql-add
: سترى الصفحة تعرضUser added
وسيقوم بإضافة مستخدم إلى قاعدة البيانات.http://localhost:8787/pgsql
: سترى قائمة المستخدمين الموجودة في قاعدة البيانات.
الخلاصة
من خلال الخطوات السابقة، قمت بإنشاء وتشغيل مشروع Webman في بيئة ServBay، واستخدام الوظائف التي يوفرها Webman لإدارة والوصول إلى مشروعك، وربطت قواعد بيانات متعددة واستدعاء البيانات منها. يجعل أداء وسهولة الاستخدام في Webman مثاليًا لبناء تطبيقات ويب وخدمات API عالية التوافرية والأداء العالي. آمل أن تساعدك هذه المقالة على الشروع في استخدام Webman وتطبيقه في مشروعاتك.