玩轉 PHP 網路程式設計全套之 libevent 框架之 httpServer

勺顛顛發表於2020-04-25

說明

框架只是實現了非常基礎的httpSever,對於請求主體【內容】需要程式設計師自行的去解析,所以要解析的話應該是非常簡單的,主要是form-data,x-www-form-urlencoded,raw,binary,GraphQL如果你要完整的相容瀏覽器端的請求以及其它工具如postman你可以繼續在此基礎上進行處理,當然了其它網路擴充套件如swoole非常完善,非常nice,拿來可以直接用了,解析都輪不到你動手,不過workerman網路框架作者是手動自己封裝的【可以看workerman的event擴充套件原始碼】。
httpServer是libevent框架封裝的基礎功能,其它玩意並沒有封裝。

hello,world httpServer

function _http_default($req, $data) {
    echo "URI:", $req->getUri(), PHP_EOL;
    //echo "Input headers:"; var_dump($req->getInputHeaders());
    //echo "Output headers:"; var_dump($req->getOutputHeaders());
    $buffer = new EventBuffer();
    $buffer->add("hello,world");
    $req->sendReply(200, "OK",$buffer);

    $buf = $req->getInputBuffer();
    echo "Body:\n";
    while ($s = $buf->readLine(EventBuffer::EOL_ANY)) {
        echo $s, PHP_EOL;
    }

}

$base = new EventBase();
$http = new EventHttp($base);
$http->setAllowedMethods(EventHttpRequest::CMD_GET | EventHttpRequest::CMD_POST);

$http->setDefaultCallback("_http_default", "custom data value");

$http->bind("0.0.0.0", 2346);
$base->loop();

響應結果

玩轉 PHP 網路程式設計全套之 libevent 框架之httpServer

libevent框架總結說明

前面所使用的內容大部分都涉及到,唯獨有一些訊號事件處理器,定時事件處理器並未使用,以及配置,日誌等,大家要吧看官方手冊擼就行了,具體要知道原理可以閱讀本人對libevent框架核心【c語言】的註解,本人不在過多的寫了。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

只會php crud的渣渣

相關文章