phpsocket.io 单进程:
例如,当 客户端A 请求过来,这个 客户端A 在处理一些业务逻辑的时候(IO操作),客户端B 在这个时候请求过来,是不是必须等 客户端A 处理完后,客户端B 才能在进行正常的请求操作,也就是说,这个中间会有阻塞。
gatewayworker 多进程:
例如,当 客户端A 请求过来,客户端A 处理一些业务逻辑(IO操作),这时候,其它客户端请求过来,发现这个进程 客户端A 在操作,就会去请求其它空闲进程吧。
以上我举的例子符合 单进程和多进程 的思想吗?如果不符合希望能举例说明。
phpsocket.io 理解正确。
gatewayworker 有专门的gateway进程,gateway进程不做业务逻辑,只负责处理与客户端的io,所以gateway可以处理大量连接,不会有阻塞情况。
gatewayworker里的businessworker是用来处理业务的,从单个businessworker进程来看,和phpsocket.io 单进程原理一样。
如果一个businessworker进程在处理慢业务,那么分配给这个进程的其他业务请求也会排队等待。但是某个进程阻塞,其他进程仍然可以处理请求。
phpsocket.io 和 gatewayworker都是用来处理通讯的,尽量不要在里面处理耗时的请求。耗时的请求可以通过异步任务来处理,参考 异步任务
明白了,感谢作者回复