Webman 是一个基于 Workerman 的高性能 PHP 异步 Web 框架,专为构建高并发、高性能的 Web 应用而设计。与传统的同步阻塞框架不同,Webman 采用事件驱动和异步非阻塞 I/O,使其在处理大量并发请求时表现出色。Webman 提供了简洁易用的 API 和灵活的扩展机制,非常适合用于构建实时应用、API 服务等。
Webman 可以帮助开发者快速构建高性能的 Web 应用和 API 服务,适用于各种需要高并发处理的场景。
在这篇文章中,我们将介绍如何在 ServBay 环境中使用 Webman 创建并运行一个简单的 Web 项目。我们将演示如何安装 Webman、编写基本的路由和控制器代码,并运行项目。
ServBay 建议开发者把网站放置在
/Applications/ServBay/www
目录下,以方便管理。
ServBay 出厂时已经自带 Composer,无需单独安装。
进入ServBay的www目录:
cd /Applications/ServBay/www
使用 Composer 安装 Webman:
composer create-project workerman/webman servbay-webman-app
cd servbay-webman-app
安装 Illuminate 数据库、分页、事件和 Symfony VarDumper:
composer require -W illuminate/database illuminate/redis illuminate/pagination illuminate/events symfony/var-dumper
在config/route.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']);
在app/controller
目录下创建IndexController.php
、CacheController.php
和DatabaseController.php
文件,并添加以下代码:
IndexController.php
文件:
namespace app\controller;
use support\Request;
class IndexController
{
public function index(Request $request)
{
return response('Hello ServBay!');
}
}
CacheController.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
文件:
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));
}
}
在config/database.php
文件中配置 MySQL 和 PostgreSQL 的连接信息:
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',
],
],
];
在项目目录下运行以下命令启动 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,并应用于您的项目中。