本人初学workerman,阅读文档后有几个疑点,请大家帮忙解答下。
1、什么是主进程(哪个步骤中产生的是主进程),什么是子进程(哪个步骤中产生的是子进程)
2、workerman中$worker = new Worker('http://0.0.0.0:8686');
这个new出来的$worker算主进程还是子进程。
3、在thinkphp5中使用workerman是否只要在配置文件worker_server.php
中配置worker_class
参数,也就是配置服务启动文件,在前后端通信的时候就可以不用写$worker = new Worker('http://0.0.0.0:8686');
来实例化出worker,会自动创建一个worker对象?
4、如果$worker = new Worker('http://0.0.0.0:8686');
中的$worker是主进程,那我又该怎样多创建几个主进程,通过多次new?
5、假设我只开启了一个主线程,5个子线程,我想不同用户进入不同子进程,又该如何操作?
6、如何验证我开了多个主线程?
小白一枚,希望大家帮我解惑下。。。。
workerman只有一个主进程,至少一个子进程。
不支持创建多个主进程。
Worker::runAll(); 时会自动创建主进程和子进程。
$worker = new Worker()
的含义创建一个监听。$worker->count = 2
含义是这个监听开启两个子进程。建议直接用webman开发,不用管主进程和子进程,开发体验和tp等框架一致。
你好,我在其他帖子中看到有人说是有多个主进程的,那他们说的主进程又是什么回事。
没有多个主进程
好的,多谢。请问下你知道第五点怎么操作么?
new5个worker,每个worker监听不同的端口,每个worker->count=1,用户想要连哪个进程就连哪个端口
1、你的意思是在【onWorkerStart 】回调方法中以【$worker = new Worker('http://0.0.0.0:8686');】的方式,创建5个不同端口worker?
2、客户端与服务器端建立连接时的端口跟这五个端口没关系的吧,这五个类似于五个子进程?
不在onWorkerSrart new worker
客户端连接时要连对应worker的端口
我有写个demo来尝试,以下是结合TP框架后的产生的配置文件,我看端口只能配置一个,并不能启动多个端口呀?是需要我把原本的启动类换成启动文件,在启动文件中多次new5个不同端口worker么?
// 扩展自身需要的配置
'protocol' => 'websocket', // 协议 支持 tcp udp unix http websocket text
'host' => '0.0.0.0', // 监听地址
'port' => 2345, // 监听端口
'socket' => '', // 完整监听地址
'context' => [], // socket 上下文选项
'worker_class' => [\app\common\service\work\WorkService::class], // 自定义Workerman服务类名 支持数组定义多个服务
或者在【'worker_class' => [\app\common\service\work\WorkService::class]】这里配置多个端口的启动类?
tp我不熟悉
好的,感谢你前面的回答