当前位置: 欣欣网 > 码农

ServBay如何启用并运行Webman项目

2024-06-28码农

什么是 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目录:

    cd /Applications/ServBay/www

    1. 安装 Webman

    使用 Composer 安装 Webman:

    composer create-project workerman/webman servbay-webman-app
    cd servbay-webman-app

    1. 安装必要的组件

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

    composer require -W illuminate/database illuminate/redis illuminate/pagination illuminate/events symfony/var-dumper

    编写 Web 项目代码

    1. 配置路由

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

    useWebman\Route;
    useapp\controller\IndexController;
    useapp\controller\CacheController;
    useapp\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.php CacheController.php DatabaseController.php 文件,并添加以下代码:

    IndexController.php 文件:

    namespaceapp\controller;
    usesupport\Request;
    classIndexController
    {
    publicfunctionindex(Request $request)
    {
    return response('Hello ServBay!');
    }
    }

    CacheController.php 文件:

    namespaceapp\controller;
    usesupport\Request;
    usesupport\Response;
    useMemcached;
    usesupport\Redis;
    classCacheController
    {
    publicfunctionmemcached(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);
    }
    publicfunctionredis(Request $request)Response
    {
    Redis::set('key''Hello Redis!');
    $value = Redis::get('key');
    return response($value);
    }
    }

    DatabaseController.php 文件:

    namespaceapp\controller;
    usesupport\Request;
    usesupport\Response;
    usesupport\Db;
    classDatabaseController
    {
    publicfunctionmysqlAdd(Request $request)Response
    {
    DB::connection('mysql')->table('users')->insert([
    'name' => 'Webman',
    'email' => '[email protected]',
    ]);
    return response('User added');
    }
    publicfunctionmysqlGet(Request $request)Response
    {
    $users = DB::connection('mysql')->table('users')->get();
    return response(json_encode($users));
    }
    publicfunctionpgsqlAdd(Request $request)Response
    {
    DB::connection('pgsql')->table('users')->insert([
    'name' => 'Webman',
    'email' => '[email protected]',
    ]);
    return response('User added');
    }
    publicfunctionpgsqlGet(Request $request)Response
    {
    $users = DB::connection('pgsql')->table('users')->get();
    return response(json_encode($users));
    }
    }



    1. 配置数据库连接

    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',
    ],
    ],
    ];

    运行 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,并应用于您的项目中。