前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ServBay如何启用并运行Webman项目

ServBay如何启用并运行Webman项目

作者头像
Tinywan
发布2024-07-05 12:42:57
690
发布2024-07-05 12:42:57
举报
文章被收录于专栏:开源技术小栈开源技术小栈

什么是 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、编写基本的路由和控制器代码,并运行项目。

ServBay 建议开发者把网站放置在/Applications/ServBay/www目录下,以方便管理。

安装 Webman

  1. 安装 Composer

ServBay 出厂时已经自带 Composer,无需单独安装。

  1. 创建项目目录

进入ServBay的www目录:

代码语言:javascript
复制
cd /Applications/ServBay/www
  1. 安装 Webman

使用 Composer 安装 Webman:

代码语言:javascript
复制
composer create-project workerman/webman servbay-webman-app
cd servbay-webman-app
  1. 安装必要的组件

安装 Illuminate 数据库、分页、事件和 Symfony VarDumper:

代码语言:javascript
复制
composer require -W illuminate/database illuminate/redis illuminate/pagination illuminate/events symfony/var-dumper

编写 Web 项目代码

  1. 配置路由

config/route.php文件中添加以下代码,以定义基本的路由:

代码语言:javascript
复制
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']);
  1. 创建控制器

app/controller目录下创建IndexController.phpCacheController.phpDatabaseController.php文件,并添加以下代码:

IndexController.php文件:

代码语言:javascript
复制
namespace app\controller;

use support\Request;

class IndexController
{
    public function index(Request $request)
    {
        return response('Hello ServBay!');
    }
}

CacheController.php文件:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
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));
    }
}
  1. 配置数据库连接

config/database.php文件中配置 MySQL 和 PostgreSQL 的连接信息:

代码语言:javascript
复制
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 项目:

代码语言:javascript
复制
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,并应用于您的项目中。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 Webman?
  • Webman 的主要特性和优势
  • 使用 Webman 创建并运行一个简单的 Web 项目
  • 安装 Webman
  • 编写 Web 项目代码
  • 运行 Web 项目
  • 总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档