[QUESTION] 自定义进程类属性process有pid,但是ProcessCollector里面取出来的process pid是null,导致无法对应
Before you submit this issue, you has been search all existed issues and search the documentation
- [] I've been search all existed issues
- [] I've been read all documentation
Describe your question
我创建了一个自定义进程类,nums是3,分别处理三类数据
并在自定义进程内部,将这三类数据的类型和这三个进程的pid绑定在一起
然后进程中通过 $msg = $this->process?->pop(); 获取数据,进行处理
我原本的想法是通过ProcessCollector::get($this->name),拿到三个process,并根据pid判断应该往哪个进程push数据,但是取出的process,根本没有pid,所以只能通过广播给三个进程,让每个进程自己识别消息处理
有没有办法可以将ProcessCollector里的process和自定义进程对应起来,来实现1对1push,而不是广播给所有进程
通过代码看,这两个process并不是一个对象,所以才一个有pid,一个是null吗?
我原本的想法是通过ProcessCollector::get($this->name),拿到三个process,并根据pid判断应该往哪个进程push数据,但是取出的process,根本没有pid,所以只能通过广播给三个进程,让每个进程自己识别消息处理
这里,拿出了 process 之后,再反射拿一下对应的 process 呢?
我原本的想法是通过ProcessCollector::get($this->name),拿到三个process,并根据pid判断应该往哪个进程push数据,但是取出的process,根本没有pid,所以只能通过广播给三个进程,让每个进程自己识别消息处理这里,拿出了 process 之后,再反射拿一下对应的 process 呢?
好像不行 ,我是继承了bindServer,在后面循环ProcessCollector::get($this->name),并进行$process->useQueue(mode: Process::IPC_NOWAIT)设置,而此时handle还没执行了,就算反射了 也肯定拿不到pid,而如果每次push时反射效率太低,emmmm 对象本身是引用传值,为啥这俩对象会变得毫无关联呢
你做一个虚拟pid,然后跑起来之后再进行虚拟和实际pid对应呢?