swoole2-用swoole搭建http伺服器
阿新 • • 發佈:2018-12-10
一.執行緒和程序的模型
啟動swoole的時候會啟動Manager程序和Master程序。對於Manager程序,用於管理Worker程序(我們業務層的邏輯程式碼一般
放在這裡)和Task程序(用於在某個特定的時間或者條件下執行的程式碼)。對於Master程序,用於底層的開發,後面詳細介紹.
二.swoole執行過程
(1)swoole支援的常用的事件列表
事件名稱 | 作用 |
---|---|
onStart | 在啟動這個swoole伺服器後觸發這個事件 |
onShutdown | 在swoole伺服器關閉時觸發這個事件 |
onWorkerStart | worker/task程序啟動時觸發這個事件 |
onWorkerStop | worker/task程序退出時觸發這個事件 |
onTask | 有新的任務等待執行 |
onFinish | 這個任務執行完成時觸發這個事件 |
onRecive | 收到了客戶端的訊息時觸發這個事件(重點) |
onConnect | 客戶端和服務端建立連線時觸發這個事件 |
onClose | 客戶端和服務端斷開連線時觸發這個事件 |
onRequest | 客戶端發起http請求時觸發這個事件 |
(2)swoole執行流程中的幾個需要注意的點
1. 在這個swoole伺服器啟動後,會建立三個程序
* Manager
* Worker
* Task
2.這個Manager程序是Worker程序的守護程序,在這個Worker程序意外結束後,這個Manager程序會重新啟動Workder進
程,Manager程序只有一個,而這個Worker可以有多個。
3.Worker程序通過給這個Task程序傳送任務,可以把一些計算量大的任務轉移到Task程序,這樣我們的Worker程序就可以
高速處理客戶端的請求,提高併發量。
4. reactor執行緒是swoole底層處理高併發,最大限度的呼叫底層資源。
三.搭建http伺服器
(1)程式碼說明
<?php
//(1)建立swool的http伺服器物件
$serv = new swoole_http_server('0.0.0.0',8000);
//(2)當瀏覽器連結點這個http伺服器的時候,向瀏覽器傳送helloworld
$serv->on('request',function($request,$response){
//(2.1)$request包含這個請求的所有資訊,比如引數
//(2.2)$response包含返回給瀏覽器的所有資訊,比如helloworld
var_dump($request);
var_dump($response);
//(2.3)向瀏覽器傳送helloworld
$response->end("hello world");
});
//(3)啟動http伺服器
$serv->start();
(2)linux操作小提示
#1.檢視程序
ps -aux | grep http-server.php
#2.批量殺死程序
kill -s 9 `ps -aux | grep http-server | awk '{print $2}'`
(3)swoole程式編寫流程
1. 建立swoole伺服器物件
2. 為這個物件設定回撥函式
3. 啟動swoole伺服器