Swoole目前總共有三種[運行模式](https://wiki.swoole.com/wiki/page/353.html),默認為多進程模式(`SWOOLE_PROCESS`)。
```
# Base模式(SWOOLE_BASE)
傳統的異步非阻塞Server,reactor和worker是同一個角色。TCP連接是在worker進程中維持的。
如果客戶端連接之間不需要交互,可以使用BASE模式。如Memcache、Http服務器等。
# 線程模式
多線程Worker模式,Reactor線程來處理網絡事件輪詢,讀取數據。得到的請求交給Worker線程去處理。
缺點:一個線程發生內存錯誤,整個進程會全部結束。
由于PHP的ZendVM在多線程模式存在內存錯誤,多線程模式在v1.6.0版本后已關閉。
# 進程模式
與多線程Worker模式不同的是,線程換成了進程。Reactor線程來處理網絡事件輪詢,讀取數據。得到的請求交給Worker進程去處理。適合業務邏輯非常復雜的場景。如WebSocket服務器等。
```
``` php
$serv = new swoole_server(string $host, int $port, int $mode = SWOOLE_PROCESS, int $sock_type = SWOOLE_SOCK_TCP);
```