描述:單機Workerman 開啟4個worker子進程且開啟端口復用,那么客戶端連接的時候。每個客戶端都有一個TcpConnection 對象實例,均保存在各自Worker 內(nèi)存。
疑問一:如果來自多個websocket 客戶端,但是他們的連接實例均不在同一進程。不在同一個Worker實例,那么是如何發(fā)送消息的嘛?
疑問二:Workerman Epoll write事件,在什么情況下會觸發(fā)?
復雜的話,能否提供一篇靠譜的文章鏈接??
在此謝謝了~~-
1、跨進程通信使用官方的分布式channel組件:http://doc.workerman.net/components/channel.html
2、epoll的可寫事件觸發(fā)條件,簡單理解就是:
LT模式:只要socket內(nèi)核發(fā)送緩沖區(qū)未滿,就會持續(xù)觸發(fā)可寫事件;
ET模式:當socket內(nèi)核發(fā)送緩沖區(qū)未滿時只會觸發(fā)一次可寫事件,只有發(fā)送緩沖區(qū)滿并且再次變?yōu)槲礉M時才會再次觸發(fā)可寫事件。
你好,請問 workerman AsyncTcpConnection 類,$this->_socket = \stream_socket_client("tcp://127.0.0.1:8888"$errno, $errstr, 0, \STREAM_CLIENT_ASYNC_CONNECT, $context) ;STREAM_CLIENT_ASYNC_CONNECT 和 STREAM_CLIENT_CONNECT 區(qū)別是什么?
謝謝!