企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
ServBay如何启用并运行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 1. **安装 Composer** ServBay 出厂时已经[自带 Composer](https://support.servbay.com/zh-CN/php/composer.html),无需单独安装。 2. **创建项目目录** 进入ServBay的www目录: ~~~ cd /Applications/ServBay/www ~~~ 3. **安装 Webman** 使用 Composer 安装 Webman: ~~~ composer create-project workerman/webman servbay-webman-app cd servbay-webman-app ~~~ 4. **安装必要的组件** 安装 Illuminate 数据库、分页、事件和 Symfony VarDumper: ~~~ composer require -W illuminate/database illuminate/redis illuminate/pagination illuminate/events symfony/var-dumper ~~~ ## 编写 Web 项目代码 1. **配置路由** 在`config/route.php`文件中添加以下代码,以定义基本的路由: ~~~php use 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']); ~~~ 2. **创建控制器** 在`app/controller`目录下创建`IndexController.php`、`CacheController.php`和`DatabaseController.php`文件,并添加以下代码: `IndexController.php`文件: ~~~php namespace app\controller; use support\Request; class IndexController { public function index(Request $request) { return response('Hello ServBay!'); } } ~~~ `CacheController.php`文件: ~~~php namespace 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); } } ~~~ `DatabaseController.php`文件: ~~~php namespace 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' => 'demo@webman.test', ]); 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' => 'demo@webman.test', ]); return response('User added'); } public function pgsqlGet(Request $request): Response { $users = DB::connection('pgsql')->table('users')->get(); return response(json_encode($users)); } } ~~~ 3. **配置数据库连接** 在`config/database.php`文件中配置 MySQL 和 PostgreSQL 的连接信息: ~~~php return [ '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', ], ], ]; ~~~ ## 运行 Web 项目 在项目目录下运行以下命令启动 Webman 项目: ~~~bash 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,并应用于您的项目中。