1. 程式人生 > >swoole2-用swoole搭建http伺服器

swoole2-用swoole搭建http伺服器

一.執行緒和程序的模型

swoole的執行緒/程序

啟動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伺服器