Swoole學習之網絡通訊引擎Web服務(四)

1、HTTP服務

HTTP服務端

咱們看Swoole官方文檔入門指引->快速起步->建立Web服務器,把文檔的示例代碼跑一次,看下效果:php

http_server.phphtml

<?php

$http = new Swoole\Http\Server("0.0.0.0", 9501);

$http->on('request', function ($request, $response) {
    var_dump($request->get, $request->post);

    // cookie測試
    // $response->cookie('name', 'lily', time()+3600);
    $response->header("Content-Type", "text/html; charset=utf-8");
    $response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
});

$http->start();

打開一個窗口,訪問該服務:瀏覽器

root@5ee6bfcc1310:~# curl http://127.0.0.1:9501
<h1>Hello Swoole. #9147</h1>root@5ee6bfcc1310:~# curl http://127.0.0.1:9501?act=all
<h1>Hello Swoole. #4674</h1>root@5ee6bfcc1310:~#

Http服務器只須要關注請求響應便可,因此只須要監聽一個onRequest事件。當有新的Http請求進入就會觸發此事件。事件回調函數有2個參數,一個是$request對象,包含了請求的相關信息,如GET/POST請求的數據。服務器

另一個是response對象,對request的響應能夠經過操做response對象來完成。$response->end()方法表示輸出一段HTML內容,並結束此請求。swoole

  • 0.0.0.0 表示監聽全部IP地址,一臺服務器可能同時有多個IP,如127.0.0.1本地迴環IP、192.168.1.100局域網IP、210.127.20.2 外網IP,這裏也能夠單獨指定監聽一個IP
  • 9501 監聽的端口,若是被佔用程序會拋出致命錯誤,中斷執行。

靜態內容

當爲靜態頁面如 test.html 時,不走php邏輯,須要咱們這裏作特殊的配置cookie

<?php

$http = new Swoole\Http\Server("0.0.0.0", 9501);

// 靜態資源設置,若是找到相關資源則直接返回給瀏覽器,不會再走下面的邏輯(仿Nginx)
$http->set([
    'enable_static_handle' => true,
    'document_root' => "/work/study/code/swoole/static" // 存放靜態資源路徑
]);

$http->on('request', function ($request, $response) {
    var_dump($request->get, $request->post);

    // cookie測試
    // $response->cookie('name', 'lily', time()+3600);
    $response->header("Content-Type", "text/html; charset=utf-8");
    $response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
});

$http->start();
相關文章
相關標籤/搜索