能不能再WORKERMAN里加一個(gè)FASTCGI的CILENT 這樣可以直接對(duì)接FPM,以前的NGXIN-FPM業(yè)務(wù)邏輯可以直接遷移過(guò)去
你是說(shuō)給workerman加一個(gè)fastcgi協(xié)議讓workerman支持fastcgi服務(wù)吧?
以前的NGXIN-FPM業(yè)務(wù)邏輯遷移到workerman可以直接用workerman的http協(xié)議,不需要nginx,也不需要workerman支持fastcgi協(xié)議。當(dāng)然也可以給按照workerman的接口寫一個(gè)fastcgi協(xié)議,但是感覺(jué)用處不大。
如果老代碼里沒(méi)有強(qiáng)依賴FPM是可以做到遷移到worekrman的。但是目前的所有mvc框架都是基于FPM模式開發(fā)的,用了很多php-cli(workerman是基于php-cli)不兼容的代碼,例如header setcookie exit die 等等,所以要遷移還是要做一些兼容的。
老大 現(xiàn)在我們是這樣 業(yè)務(wù)都是基于nginx+fpm的,有新的需求需要長(zhǎng)連接場(chǎng)景,想用WORKERMAN做TCPSERVER維持連接狀態(tài),再把請(qǐng)求轉(zhuǎn)發(fā)到FPM上處理,不經(jīng)NGINX節(jié)約一次HTTP的解析,直接走FASTCGI協(xié)議。
老大 我在git上找了個(gè)別人寫的 測(cè)試了下能通 可以通過(guò)ip端口 或者 unix sock和fpm進(jìn)程通信
$this->_sock = pfsockopen($this->_host, $this->_port, $errno, $errstr, $this-
$this->_sock = fsockopen($this->_
我看他源碼里打開一個(gè)SOCK連接有兩種方式,第一種是持久連接,那是不是WORKERMAN+FPM的形式用持久的比較好些。
還有個(gè)題外話請(qǐng)教下。。workerman listen后 子進(jìn)程accpet監(jiān)聽(tīng)用的fd 比如這個(gè)fd是80端口,之后有客戶端connect進(jìn)來(lái)后,accpet會(huì)返回一個(gè)新的fd用于和客戶端連接用,那這個(gè)fd的端口是多少呢,如果是非80端口 防火墻應(yīng)該會(huì)攔截的啊,這個(gè)怎么繞過(guò)的限制啊
學(xué)習(xí)了,那Gateway/Worker 的進(jìn)程模型 WOKER連接GATEWAY的時(shí)候 是每個(gè)WORKER的端口不同是吧