天天看點

GatewayWorker開發篇01——環境搭建及多程序開發

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環境變量

GatewayWorker開發篇01——環境搭建及多程式開發

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環境)

GatewayWorker開發篇01——環境搭建及多程式開發
  1. 因為Windows連結數限制,開2個現成的話,需要配置2個bat檔案。
  2. 防止顯示中文亂碼。

路徑:計算機\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

添加主鍵:autrun 鍵值:chcp 65001>nul

GatewayWorker開發篇01——環境搭建及多程式開發
  1. 批處理檔案内容:

chcp 65001

php Applications\MeterApp2\start_register.php Applications\MeterApp2\start_gateway.php Applications\MeterApp2\start_businessworker.php

pause

GatewayWorker開發篇01——環境搭建及多程式開發
  1. 修改2個線程的監控端口:start_gateway.php
GatewayWorker開發篇01——環境搭建及多程式開發
GatewayWorker開發篇01——環境搭建及多程式開發

參考檔案連結:https://www.workerman.net/

繼續閱讀