能不能再WORKERMAN里加一个FASTCGI的CILENT

ayamzh

能不能再WORKERMAN里加一个FASTCGI的CILENT 这样可以直接对接FPM,以前的NGXIN-FPM业务逻辑可以直接迁移过去

2642 11 0
11个回答

walkor

你是说给workerman加一个fastcgi协议让workerman支持fastcgi服务吧?

以前的NGXIN-FPM业务逻辑迁移到workerman可以直接用workerman的http协议,不需要nginx,也不需要workerman支持fastcgi协议。当然也可以给按照workerman的接口写一个fastcgi协议,但是感觉用处不大。

如果老代码里没有强依赖FPM是可以做到迁移到worekrman的。但是目前的所有mvc框架都是基于FPM模式开发的,用了很多php-cli(workerman是基于php-cli)不兼容的代码,例如header setcookie exit die 等等,所以要迁移还是要做一些兼容的。

  • 暂无评论
ayamzh

老大 现在我们是这样 业务都是基于nginx+fpm的,有新的需求需要长连接场景,想用WORKERMAN做TCPSERVER维持连接状态,再把请求转发到FPM上处理,不经NGINX节约一次HTTP的解析,直接走FASTCGI协议。

  • 暂无评论
walkor

了解了,这个也是一种很好的思路。
不过workerman目前没有fpm的client库,只能自己开发了。
如果开发好了和我说下,我放到主页帮你宣传也方便其他人参考使用

  • 暂无评论
ayamzh

老大 我在git上找了个别人写的 测试了下能通 可以通过ip端口 或者 unix sock和fpm进程通信

  • 暂无评论
walkor

感谢,已经收藏

  • 暂无评论
ayamzh
            $this->_sock = pfsockopen($this->_host, $this->_port, $errno, $errstr, $this-
            $this->_sock = fsockopen($this->_

我看他源码里打开一个SOCK连接有两种方式,第一种是持久连接,那是不是WORKERMAN+FPM的形式用持久的比较好些。

  • 暂无评论
walkor

是的,持久的好一些

  • 暂无评论
ayamzh

还有个题外话请教下。。workerman listen后 子进程accpet监听用的fd 比如这个fd是80端口,之后有客户端connect进来后,accpet会返回一个新的fd用于和客户端连接用,那这个fd的端口是多少呢,如果是非80端口 防火墙应该会拦截的啊,这个怎么绕过的限制啊

  • 暂无评论
walkor

一个socket连接包含 客户端ip:客户端端口<----->服务端ip:服务端端口 四个信息,四个信息中只要有一个不同就可以。

accpet后服务端端口是一样的,变化的是客户端ip:客户端端口

  • 暂无评论
ayamzh

学习了,那Gateway/Worker 的进程模型 WOKER连接GATEWAY的时候 是每个WORKER的端口不同是吧

  • 暂无评论
walkor

  • 暂无评论
年代过于久远,无法发表回答
🔝