发现在start.php中
$gateway->onConnect = function($connection) {...}
的回调函数中,使用memcached设置的缓存在
Event::onConnect($client_id)
中访问不到,必须用usleep(100000);休眠0.1毫秒才可以。
对于workerman的模型理解得不是很透彻,请问这两个函数是怎样的触发方式和顺序?
另外我了解到,workerman中的$_SESSION是通过gateway发向worker的,那么在$gateway->onConnect这个回调函数中可以改$_SESSION中的值吗?
gatewayWorker项目中
业务代码都在worker进程中运行,gateway的职责就是维护连接+转发数据,最好不要处理业务逻辑。
gateway进程和worker进程是分开运行的,gateway进程向memcache中存入值的同时,worker中的Event::onConnect已经在运行了,Event::onConnect读取memcache时可能gateway进程还没写入成功,自然不能立刻得到memcache中的值。正常现象
gateway进程不让写业务,自然无法得到session
多谢!