當前位置: 妍妍網 > 碼農

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,並套用於您的計畫中。