创建并运行 Webman 项目
什么是 Webman?
Webman 是一个基于 Workerman 的高性能 PHP 异步 Web 框架,专为构建高并发、高性能的 Web 应用而设计。与传统的同步阻塞框架不同,Webman 采用事件驱动和异步非阻塞 I/O,使其在处理大量并发请求时表现出色。Webman 提供了简洁易用的 API 和灵活的扩展机制,非常适合用于构建实时应用、API 服务等。
Webman 的主要特性和优势
- 高性能:基于事件驱动和异步非阻塞 I/O,能够处理大量并发请求。
- 易于使用:提供简洁的 API 和丰富的功能,开发者可以快速上手。
- 多协议支持:支持 HTTP、WebSocket 等多种协议,适用于多种应用场景。
- 灵活扩展:可以通过插件和中间件机制实现功能扩展。
- 强大的社区支持:拥有活跃的开发者社区和丰富的文档资源。
Webman 可以帮助开发者快速构建高性能的 Web 应用和 API 服务,适用于各种需要高并发处理的场景。
使用 Webman 创建并运行一个简单的 Web 项目
在这篇文章中,我们将介绍如何在 ServBay 环境中使用 Webman 创建并运行一个简单的 Web 项目。我们将演示如何安装 Webman、编写基本的路由和控制器代码,并运行项目。
TIP
ServBay 建议开发者把网站放置在/Applications/ServBay/www
目录下,以方便管理。
安装 Webman
安装 Composer
ServBay 出厂时已经自带 Composer,无需单独安装。
创建项目目录
进入ServBay的www目录:
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
编写 Web 项目代码
配置路由
在
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
11CacheController.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
25DatabaseController.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
运行 Web 项目
在项目目录下运行以下命令启动 Webman 项目:
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
:您会看到数据库中的用户列表。
总结
通过以上步骤,您成功通过ServBay创建并运行了一个 Webman 项目,并使用 Webman 提供的功能来管理和访问您的项目,同时连接了多种数据库并调用数据。Webman 的高性能和易用性,使得它非常适合用于构建高并发、高性能的 Web 应用和 API 服务。希望这篇文章能帮助您快速上手 Webman,并应用于您的项目中。