Swoole從入門到入土(14)——HTTP服務器[協程風格]

在這之間,咱們討論了異步風格HTTP服務器,它繼承自異步風格的TCP服務器,有着異步風格的全部優勢,同時若是碰到了大量的IO等待也會存在阻塞的缺點。php

而協程風格的HTTP則很好處理了IO等待的問題。這裏要注意徹底協程化的 HTTP 服務器實現,Co\Http\Server 因爲 HTTP 解析性能緣由使用 C++ 編寫,所以並不是由 PHP 編寫的 Co\Server 的子類。html

 

一、成員函數web

__construct():構造函數編程

Swoole\Coroutine\Http\Server::__construct(string $host, int $port = 0, bool $ssl = false, bool $reuse_port = false);

$host:監聽的 IP 地址【如果本地 UNIXSocket 則應以形如 unix://tmp/xxx.sock 的格式填寫 】服務器

$port:監聽端口,可選0~65535websocket

$ssl:是否啓用 SSL/TLS 隧道加密dom

$reuse_port:是否啓用端口複用特性,開啓後多個服務能夠共用一個端口異步

 

handle():註冊回調函數以處理參數 $pattern 所指示路徑下的 HTTP 請求。socket

Swoole\Coroutine\Http\Server->handle(string $pattern, callable $fn): void

$pattern:設置 URL 路徑【如 /index.html,注意這裏不能傳入 http://domain】函數

$fn:處理函數,用法參考 Swoole\Http\Server 中的 OnRequest 回調

注意:該函數必須在 Server::start 以前設置處理函數

 

二、完整示例:

Co\run(function () {
    $server = new Co\Http\Server("127.0.0.1", 9502, false);
    $server->handle('/', function ($request, $response) {
        $response->end("<h1>Index</h1>");
    });
    $server->handle('/test', function ($request, $response) {
        $response->end("<h1>Test</h1>");
    });
    $server->handle('/stop', function ($request, $response) use ($server) {
        $response->end("<h1>Stop</h1>");
        $server->shutdown();
    });
    $server->start();
});

 

協程風絡的HTTP服務器就是這麼簡單。下一期開始,咱們一塊兒進行websocket服務器。

2020過得好快啊,明天就是11月份了。

 

---------------------------  我是可愛的分割線  ----------------------------

最後博主借地宣傳一下,漳州編程小組招新了,這是一個面向漳州青少年信息學/軟件設計的學習小組,有意向的同窗點擊連接,聯繫我吧。

相關文章
相關標籤/搜索