發(fā)現(xiàn)在start.php中
$gateway->onConnect = function($connection) {...}
的回調(diào)函數(shù)中,使用memcached設(shè)置的緩存在
Event::onConnect($client_id)
中訪問(wèn)不到,必須用usleep(100000);休眠0.1毫秒才可以。
對(duì)于workerman的模型理解得不是很透徹,請(qǐng)問(wèn)這兩個(gè)函數(shù)是怎樣的觸發(fā)方式和順序?
另外我了解到,workerman中的$_SESSION是通過(guò)gateway發(fā)向worker的,那么在$gateway->onConnect這個(gè)回調(diào)函數(shù)中可以改$_SESSION中的值嗎?
gatewayWorker項(xiàng)目中
業(yè)務(wù)代碼都在worker進(jìn)程中運(yùn)行,gateway的職責(zé)就是維護(hù)連接+轉(zhuǎn)發(fā)數(shù)據(jù),最好不要處理業(yè)務(wù)邏輯。
gateway進(jìn)程和worker進(jìn)程是分開運(yùn)行的,gateway進(jìn)程向memcache中存入值的同時(shí),worker中的Event::onConnect已經(jīng)在運(yùn)行了,Event::onConnect讀取memcache時(shí)可能gateway進(jìn)程還沒(méi)寫入成功,自然不能立刻得到memcache中的值。正?,F(xiàn)象
gateway進(jìn)程不讓寫業(yè)務(wù),自然無(wú)法得到session