初學(xué)者,請(qǐng)教幾個(gè)問(wèn)題
1.GatewayWorker中,假如開(kāi)啟了5個(gè)BusinessWorker進(jìn)程,此時(shí)有10個(gè)客戶(hù)端連接上來(lái),
每個(gè)work進(jìn)程維持2個(gè)連接,假如每個(gè)連接都需要進(jìn)行數(shù)據(jù)操作,此時(shí)每個(gè)work進(jìn)程是如何工作的呢
是2個(gè)連接,串行起來(lái),一個(gè)接著一個(gè)操作嗎
2.GatewayWorker與其他web框架相結(jié)合,我按照demo,可以成功的完成類(lèi)似的功能:
用戶(hù)打開(kāi)一個(gè)頁(yè)面,此時(shí)與GatewayWorker server端通過(guò) websocket 建立連接,
用戶(hù)完成一個(gè)操作,觸發(fā)一個(gè) 消息推送 事件,我在框架里面是把
GatewayClient\Gateway 這個(gè)文件加入到了框架內(nèi)部,然后在web后端(也就是框架內(nèi)部),通過(guò)
GatewayClient\Gateway 去推送消息,確實(shí)并沒(méi)有經(jīng)過(guò)Events.php ,也就是如文檔中所說(shuō)
“GatewayWorker不處理任何業(yè)務(wù)邏輯,GatewayWorker僅僅當(dāng)做一個(gè)單向的推送通道”,
感覺(jué)這樣的話(huà),GatewayWorker 作為server端,只是起到了,開(kāi)啟進(jìn)程,監(jiān)聽(tīng)端口,相當(dāng)于一個(gè)中轉(zhuǎn)站的作用
作為輔助 web端 的一個(gè)角色,不知道這樣理解,是否正確?
3.還有想問(wèn)下,類(lèi)似workman這種框架 在一般的web應(yīng)用中,基本上都是起到一個(gè) 輔助性的 角色吧,
主要的業(yè)務(wù)還是在 web端 進(jìn)行處理的吧
4.如果想實(shí)現(xiàn)一個(gè)客戶(hù)端上傳圖片,server端保存上傳的圖片,這樣的功能,應(yīng)該如何操作呢
前端頁(yè)面js/后端server端,不知道是不是跟傳統(tǒng)的web應(yīng)用開(kāi)發(fā) 類(lèi)似
5.順便問(wèn)下,PHPSocket.IO 跟 workman ,還有 GatewayWorker,之間有什么區(qū)別嗎,如果我想在web應(yīng)用中加入消息推送的功能,用哪種比較合適呢,感覺(jué)這三者能完成的功能,大同小異,如有不對(duì),希望指正,謝謝
GatewayWorker 文檔示例中,在bind.php 中 ,
use GatewayClient\Gateway;
(并沒(méi)有 require_once '/your/path/GatewayClient/Gateway.php';) 這段代碼,我注釋了
Gateway::$registerAddress = '127.0.0.1:1238';
報(bào)錯(cuò) Class 'GatewayClient\Gateway' not found,Gateway 在 Applications/YourApp/GatewayClient/Gateway.php, Gateway.php的命名空間是 “GatewayClient” 能解答下,這是為什么嗎?
剛接觸不久,有很多不懂,謝謝,共勉
1、就單個(gè)進(jìn)程而言,請(qǐng)求都是串行執(zhí)行的,不會(huì)有并發(fā)問(wèn)題
2、使用GatewayClient時(shí),在WebServer角度看,GatewayWorker是當(dāng)作一個(gè)單向通訊通道。
當(dāng)然GatewayWorker自身也可以做雙向通訊,也就是客戶(hù)端直接發(fā)消息給GatewayWorker(在Events.php處理)。
3、web應(yīng)用中workerman的角色是什么主要看用途,例如有些公司用workerman做服務(wù)化的,例如做rpc。所有的業(yè)務(wù)邏輯都寫(xiě)在workerman里,nginx+php-fpm只作為一個(gè)模版拼接展現(xiàn),實(shí)際業(yè)務(wù)邏輯都封裝在服務(wù)里,php-fpm去調(diào)用組裝。這個(gè)時(shí)候workerman承載者幾乎所有的業(yè)務(wù),可不是簡(jiǎn)單的一個(gè)輔助。我之前任職的三家上市公司都是類(lèi)似這種架構(gòu)的。
4、workerman里http協(xié)議上傳圖片和普通PHP類(lèi)似,但是有一些差別,參考手冊(cè)http://doc.workerman.net/315182。當(dāng)然上傳圖片完全可以用nginx+php-fpm來(lái)做也沒(méi)有什么問(wèn)題。
5、PHPSocket.IO和GatewayWorker都是基于workerman開(kāi)發(fā)的,PHPSocket.IO是php版本的socket.io,與GatewayWorker區(qū)別參見(jiàn)這個(gè)帖子http://wenda.workerman.net/?/question/928。
這里有http://doc2.workerman.net/326102。
相比下workerman更底層,更靈活,但是對(duì)php開(kāi)發(fā)者要求也最高。但是如果只是簡(jiǎn)單的應(yīng)用并且在線人數(shù)不高(不超過(guò)萬(wàn)人在線)用三者都可以,哪個(gè)順手用哪個(gè)。如果超過(guò)萬(wàn)人在線的長(zhǎng)連接即時(shí)通訊項(xiàng)目,用GatewayWorker比較好,底層支持多服務(wù)器分布式部署,只要加機(jī)器就能承載更多的在線人數(shù),業(yè)務(wù)代碼不用任何更改。
GatewayClient如果是用composer裝的會(huì)利用composer的autoload自動(dòng)加載,如果不用composer就自己require進(jìn)去。