workerman 工作流程,如进程,子进程,socket等关系,workerman是如何运作的?

木子耗

workerman 工作流程,如进程,子进程,socket等关系,workerman是如何运作的?

39014 5 15
5个回答

walkor

workerman有两种进程模型
1、基本的master worker模型
2、master gateway worker模型

master worker模型工作流程及进程间关系如下:

master worker模型说明:
master进程为主进程,启动过程中读取conf配置,根据每个应用配置中的ip和端口创建监听socket,然后再根据配置中的进程数创建对应数量的子进程即worker进程,worker进程会自动继承master进程创建的监听socket,使得worker进程能够独立的接受并处理客户端的连接。而后master进程进入监听信号的逻辑中,监听worker进程退出信号(worker进程退出后,系统会自动向master进程发送一个SIGHCLD信号,mater进程会重新创建子进程,将缺失的子进程补上),master进程还会监听workermand脚本发来的停止信号(SIGINT)和平滑重启服务信号(SIGHUP)

worker进程为master进程派生出来的子进程,自动继承了master进程的监听socket,每个worker进程独立的接受并处理客户端的连接。

master worker模型比较适合业务简单的应用或者短连接应用

master gateway worker模型工作流程和进程间关系如下:

master gateway worker 模型说明:
这种模型多了一个gateway进程组,工作流程与master worker模型基本相同,区别是worker进程不再直接与客户端打交道,客户端与worker进程之间多了一个gateway进程,gateway专职处理网络IO,并维护客户端的长连接。

master gateway worker 模型非常适合长连接应用

这里有一个之前写的一个关于server模型及php实现的的ppt,发给大家参考下(仅供参考)

http://www.workerman.net/upload/answer/20140815/php_process_model.pdf

  • jojodio 2020-05-20

    大大,请教一下,上面两张图中写的进程间通信(消息队列,共享内存),可我在workerman的源码中找不到相关的PHP函数如msg_xxx,sem_xxx等,难道不是用PHP的内置函数实现的吗

小玉儿

能下载吗???

  • 暂无评论
walkor

。。。
在连接上点击右键,选择连接另存为

  • 暂无评论
workercat

问题一:workman 代码包就是 master worker 模型?
问题二:$worker->count = 4 , 是指 worker 进程的数量?

  • 勇敢的心 2020-04-21

    我理解的workerman的多进程就是和nginx一样的多进程,并不是PHP在运行中开启一个进程

walkor

@workercat 是的

  • 刘思君 2018-07-05

    哎 刚刚到了10000左右还是那个情况 这个瓶颈不好解决啊,已经尝试了许多办法了 现在workerman的日志也不打印了

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