Workerman是一款開源高性能PHP應用容器,它大大突破了傳統PHP應用範圍,被廣泛的用于網際網路、即時通訊、APP開發、硬體通訊、智能家居、物聯網等領域的開發。
GatewayWorker的技術概述
GatewayWorker基于Workerman開發的一個項目架構,用于快速開發TCP長連接配接應用,例如app推送服務端、即時IM服務端、遊戲服務端、物聯網、智能家居等等
GatewayWorker使用經典的Gateway和Worker程序模型。Gateway程序負責維持用戶端連接配接,并轉發用戶端的資料給BusinessWorker程序處理,BusinessWorker程序負責處理實際的業務邏輯(預設調用Events.php處理業務),并将結果推送給對應的用戶端。Gateway服務和BusinessWorker服務可以分開部署在不同的伺服器上,實作分布式叢集。
GatewayWorker提供非常友善的API,可以全局廣播資料、可以向某個群體廣播資料、也可以向某個特定用戶端推送資料。配合Workerman的定時器,也可以定時推送資料。
GatewayWorker 與 Workerman的關系
Workerman可以看做是一個純粹的socket類庫,可以開發幾乎所有的網絡應用,不管是TCP的還是UDP的,長連接配接的還是短連接配接的。Workerman代碼精簡,功能強大,使用靈活,能夠快速開發出各種網絡應用。同時Workerman相比GatewayWorker也更底層,需要開發者有一定的多程序程式設計經驗。
因為絕大多數開發者的目标是基于Workerman開發TCP長連接配接應用,而長連接配接應用服務端有很多共同之處,例如它們有相同的程序模型以及單發、群發、廣播等接口需求。是以才有了GatewayWorker架構,GatewayWorker是基于Workerman開發的一個TCP長連接配接架構,實作了單發、群送、廣播等長連接配接必用的接口。GatewayWorker架構實作了Gateway Worker程序模型,天然支援分布式多伺服器部署,擴容縮容非常友善,能夠應對海量并發連接配接。可以說GatewayWorker是基于Workerman實作的一個更完善的專門用于實作TCP長連接配接的項目架構。
用GatewayWorker還是Workerman?
如果你的項目是長連接配接并且需要用戶端與用戶端之間通訊,建議使用GatewayWorker。
短連接配接或者不需要用戶端與用戶端之間通訊的項目建議使用Workerman。
GatewayWorker不支援UDP監聽,是以UDP服務請選擇Workerman。
如果你有多程序socket程式設計經驗的人,喜歡定制自己的程序模型,可以選擇Workerman。
Linux系統快速開始(從一個精簡的聊天demo開始)
1、下載下傳demo(文章後面有連結)
2、指令行運作 unzip GatewayWorker.zip 解壓縮GatewayWorker.zip
3、指令行運作 cd GatewayWorker 進入GatewayWorker目錄
4、指令行運作 php start.php start 啟動GatewayWorker
5、新開幾個指令行視窗運作 telnet 127.0.0.1 8282,輸入任意字元即可聊天(非本機測試請将127.0.0.1替換成實際ip)。
注意:如果telnet逾時請檢查伺服器防火牆(iptables)
Windows系統快速開始(從一個精簡的聊天demo開始)
1、下載下傳demo
2、解壓到任意位置
3、進入GatewayWorker目錄
4、輕按兩下start_for_win.bat啟動。
5、新開幾個cmd指令行視窗運作 telnet 127.0.0.1 8282,輸入任意字元即可聊天(非本機測試請将127.0.0.1替換成實際ip,)。
設定php環境變量
workerman的在Windows下與Linux下差別
1、win版本單個程序隻支援200+個連接配接(最多255個);
2、win版本count屬性無效,全部為單程序
3、不支援start stop reload restart status指令
4、cmd指令行啟動,後面可接多個檔案,例如 php start_web.php start_gateway.php start_worker.php
5、無法守護程序,cmd視窗關掉後服務即停止
6、每個啟動檔案隻能執行個體化一個容器(Worker/WebServer/Gateway/BusinessWorker),需要執行個體化多個容器時
需要拆成多個檔案,例如 start_web.php start_gateway.php start_worker.php 分别初始化web gateway worker
Windows版本workerman的啟動與停止
cmd指令行中運作 php your_file.php(注意後面可以接多個檔案)
注意windows版本沒有stop、reload、restart、status指令,啟動時直接運作 php 檔案.php 即可,停止運作按ctrl+c
舉例:(Windows環境)
- 因為Windows連結數限制,開2個現成的話,需要配置2個bat檔案。
- 防止顯示中文亂碼。
路徑:計算機\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
添加主鍵:autrun 鍵值:chcp 65001>nul
- 批處理檔案内容:
chcp 65001
php Applications\MeterApp2\start_register.php Applications\MeterApp2\start_gateway.php Applications\MeterApp2\start_businessworker.php
pause
- 修改2個線程的監控端口:start_gateway.php
參考檔案連結:https://www.workerman.net/