1. 程式人生 > >swoole基礎之http-server

swoole基礎之http-server

    一般我們使用的http伺服器都是例如Apache和NGINX的較多,同樣swoole本身也自帶了http的這種服務,可以直接進行使用,但是在這個的上層我們一般會加nginx服務進行fastcgi轉發到swoole的http服務中.

   一般我們在測試的使用可以使用兩種常見的方式進行http服務的測試

  1. 使用瀏覽器直接訪問地址 +埠    (要HTTPserver要繫結0.0.0.0都可以進行訪問  埠設定要避免衝突)

使用命令列

curl http://127.0.0.1:8800?name=x-wolf

                                                                                                                                                                                                                    

       作為web伺服器一般我們都會有這樣的需求,當靜態資源的時候我們希望他直接去訪問靜態檔案,而對於動態資源再執行平常的請求.實現與nginx/Apache一樣的動靜態資源的處理方式.

//需要設定HTTPserver引數

$http = new swoole_http_server('0.0.0.0',8811);

$http->set([
        'enable_static_handler' =>      true, //設定靜態資源處理
        'document_root'         =>      '/usr/local/nginx/html/swoole/server/data', //設定靜態資源放置的地址
]);

  

    2. 當使用nginx作為代理轉發的時候,需要進行一些配置

server
{
    listen 2017;
    #server_name 110.255.42.22;

    location /
    {
        root html;
        index index.html index.htm;
    }
    location ~ \.php$
    {
        proxy_http_version 1.1;
        proxy_set_header Connection "keep-alive";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://127.0.0.1:9501; //轉發到9501
    }
}

    此時需要開啟swoole的http服務

$http = new swoole_http_server("127.0.0.1", 9501);
$http->set(
array(
    'reactor_num'=>2,
    'worker_num'=>16
)
);
$http->on('request', function ($request, $response) {
    $response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
});
$http->start();

 

注意點:

  1. 在服務端列印內容不會顯示在瀏覽器中(print var_dump...)   他會將內容列印到終端中
  2. 要想返回到客戶端中顯示,使用自帶方法即可
    $response->write('輸出內容');
    
    $response->end('最後內容,此後再無內容輸出');