webman集成GatewayWorker

ChuckWe

webman集成GatewayWorker

在start.php文件修改,本想更改为自定义进程,发现改的很大,然后给提到了外面

就有几个比较初级的问题

本身Gateway是可以用$_SESSION了,那bootstrap.php里面的session是否可以不在启动Gateway时去重新加载一次?

http开了两个进程,那么在fork的时候是复制了一个session还是共享同一个??没有细看代码 手动狗头,,是在fork的时候引用的地址吗

关于DI的容器,是不是只要我worker启动一个的时候就得加载一次,他不是共享的,单独在各个进程??

其次这个核心数是真的不知道应该设定多大,假设服务器8核16G,我应该设定多少核心
截图

暂时集成还不知道有没有坑,其他一切正常

有没有大佬教教小弟...

3371 1 0
1个回答

walkor

GatewayWorker和webman代码整合在一起没有多大意义。他们是独立的项目,应用场景也不同。将他们代码整合到一起类似与把MYSQL和Redis代码整合在一起的感觉。如果你需要在GatewayWorker中使用数据库 redis等组件,直接composer安装参照对应组件的文档使用就好了。

GatewayWorker 和 webman是独立的项目,任何一方更改或者session去掉session不影响另外一方,session都是独立不互通的。就像你改了MYSQL源码不影响Redis一样。

session是在有客户端连接请求时才有的东西,fork进程时进程里并没有任何session,不存在fork时复制或者共享session的说法。fork进程后有连接有请求的时候才会有session相关的操作。session原理基本都一样,找个地方把数据存起来,请求中有个类似sessionid的东西,请求来了就到存储里读取对应sessionid的数据,请求完毕写回存储。这个存储可能是磁盘、redis、甚至内存等。

每个进程都是独立的,内存及变量都是隔离的,互相不影响。每个进程启动的时候都会初始化自己的DI、Mysql、Redis等等

进程数参考手册 http://doc.workerman.net/faq/processes-count.html

  • ChuckWe 2020-06-23

    多谢大佬,事实上准备直接拿GatewayWorker做一个社交项目.
    之前有只用GatewayWorker做聊天相关和一些定时服务,tp或laravel做api,

    虽然GatewayWorker也可以同时启动http服务
    webman自定义进程websocket可以完成聊天,
    但时间周期太短,所以最后想直接放在一起,用双方集成好的部分就好了.

    大约不会出现什么问题吧?

    上线运行,完事准备背锅。
    手动狗头。

  • walkor 2020-06-24

    不会出现什么问题

年代过于久远,无法发表回答
🔝