日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Workerman開發(fā):如何實現(xiàn)基于HTTP2協(xié)議的Web服務器

HTTP2是HTTP協(xié)議的新一代版本,它在性能和安全性方面都有了很大的提升。Workerman是一款常用的PHP實時通信框架,它具有高性能、易擴展和易用等優(yōu)點。如何實現(xiàn)基于HTTP2協(xié)議的Web服務器呢?本文將從以下幾個方面介紹:

    理解HTTP2協(xié)議的特點Workerman如何支持HTTP2協(xié)議實現(xiàn)具體的HTTP2協(xié)議的Web服務器代碼示例

一、理解HTTP2協(xié)議的特點

HTTP2協(xié)議是HTTP協(xié)議的新一代版本,它在性能和安全性方面都有了很大的提升。相對于HTTP1.x協(xié)議,它有以下特點:

    二進制協(xié)議:HTTP2采用二進制協(xié)議,而HTTP1.x采用文本協(xié)議。二進制協(xié)議可以更快地解析和傳輸數(shù)據(jù)。多路復用:HTTP2可以在同一個連接上并行傳輸多個請求和響應。這樣可以減少連接建立和延遲,提高了網(wǎng)站的整體響應速度。頭部壓縮:HTTP2采用HPACK算法對請求和響應的頭部進行壓縮,減少了數(shù)據(jù)傳輸?shù)拇笮。岣吡诵阅堋7掌魍扑停篐TTP2可以主動推送網(wǎng)頁相關的資源文件到客戶端,減少了客戶端的請求次數(shù),提高了網(wǎng)頁打開速度。

二、Workerman如何支持HTTP2協(xié)議

Workerman是一款常用的PHP實時通信框架,它最初設計用于實現(xiàn)基于TCP協(xié)議的高性能通信,但是它也支持HTTP協(xié)議。Workerman默認采用HTTP1.x協(xié)議,但是它也支持HTTP2協(xié)議。

實現(xiàn)HTTP2協(xié)議的基本條件是要有SSL證書,因為HTTP2協(xié)議只支持在加密模式下使用。所以,我們需要在Workerman中配置SSL證書,以支持HTTP2協(xié)議。具體配置方法如下:

$context = array(
    // 這是key, 一般和crt放在一起
    'ssl' => array(
        // 請使用絕對路徑
        'local_cert' => '/your/path/to/server.crt', // 服務端證書
        'local_pk' => '/your/path/to/server.key', // 服務端證書的私鑰
        'verify_peer' => false, // 是否需要驗證客戶端證書
    )
);

// 初始化一個Worker監(jiān)聽http://0.0.0.0:443
$worker = new Worker("http://0.0.0.0:443", $context);

// 開啟對HTTP2.0的支持
$worker->transport = 'ssl';
$worker->protocol = "Http2";

登錄后復制

三、實現(xiàn)具體的HTTP2協(xié)議的Web服務器

Workerman支持HTTP2協(xié)議后,我們就可以實現(xiàn)HTTP2協(xié)議的Web服務器了。具體實現(xiàn)方法有很多,這里我們以實現(xiàn)一個基本的HTTP2協(xié)議的Web服務器為例。

    創(chuàng)建一個PHP文件,命名為http2_server.php,輸入以下代碼:
<?php
require_once __DIR__ . '/../vendor/autoload.php';

$context = array(
    'ssl' => array(
        'local_cert' => '/your/path/to/server.crt',
        'local_pk' => '/your/path/to/server.key',
        'verify_peer' => false,
    )
);

$worker = new WorkermanWorker('http://0.0.0.0:443', $context);

$worker->transport = 'ssl';
$worker->protocol = "Http2";

$worker->onConnect = function($connection) {
    echo "new connection from ip " . $connection->getRemoteIp() . "
";
};

$worker->onMessage = function($connection, $data) {
    $request_uri = $_SERVER['REQUEST_URI'];
    $response = "Hello, HTTP2!
";
    $connection->send($response);
};

Worker::runAll();

登錄后復制登錄后復制

    啟動Web服務器

運行以下命令啟動Web服務器:

php http2_server.php start -d

登錄后復制

這時,如果你使用瀏覽器訪問https://localhost,應該可以看到內(nèi)容為Hello, HTTP2!的頁面。

四、代碼示例

代碼已經(jīng)在第三部分中給出,這里再給出一遍完整代碼。你只需要將/your/path/to/server.crt和/your/path/to/server.key換成你自己的SSL證書路徑即可。

<?php
require_once __DIR__ . '/../vendor/autoload.php';

$context = array(
    'ssl' => array(
        'local_cert' => '/your/path/to/server.crt',
        'local_pk' => '/your/path/to/server.key',
        'verify_peer' => false,
    )
);

$worker = new WorkermanWorker('http://0.0.0.0:443', $context);

$worker->transport = 'ssl';
$worker->protocol = "Http2";

$worker->onConnect = function($connection) {
    echo "new connection from ip " . $connection->getRemoteIp() . "
";
};

$worker->onMessage = function($connection, $data) {
    $request_uri = $_SERVER['REQUEST_URI'];
    $response = "Hello, HTTP2!
";
    $connection->send($response);
};

Worker::runAll();

登錄后復制登錄后復制

總結(jié)

HTTP2協(xié)議是HTTP協(xié)議的新一代版本,相對于HTTP1.x協(xié)議,在性能和安全性方面都有了很大的提升。Workerman是一款常用的PHP實時通信框架,它支持HTTP2協(xié)議。本文講述了如何使用Workerman實現(xiàn)基于HTTP2協(xié)議的Web服務器,包括配置SSL證書和實現(xiàn)具體的Web服務器。

分享到:
標簽:http web服務器 Workerman
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定