swoole基礎之http-server
阿新 • • 發佈:2018-12-24
一般我們使用的http伺服器都是例如Apache和NGINX的較多,同樣swoole本身也自帶了http的這種服務,可以直接進行使用,但是在這個的上層我們一般會加nginx服務進行fastcgi轉發到swoole的http服務中.
一般我們在測試的使用可以使用兩種常見的方式進行http服務的測試
- 使用瀏覽器直接訪問地址 +埠 (要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();
注意點:
- 在服務端列印內容不會顯示在瀏覽器中(print var_dump...) 他會將內容列印到終端中
- 要想返回到客戶端中顯示,使用自帶方法即可
$response->write('輸出內容'); $response->end('最後內容,此後再無內容輸出');