Hi walkor, 我現(xiàn)在服務(wù)器框架只是用的Workerman,如果要用Channel作分布式通訊的話,必須要知道連接所在的worker, 那么當(dāng)設(shè)備連接上來(lái)的時(shí)候,我要如何獲取到當(dāng)連接所在的進(jìn)程(worker id)? 例如在$tcp_worker->onConnect = function ($connection) {}這個(gè)函數(shù)里面.
是的,可以在onConnect的時(shí)候獲取$worker->id,就知道是在哪一個(gè)進(jìn)程了。
如果是分布式部署,還需要知道是哪個(gè)服務(wù)器,可以用$worker->name來(lái)區(qū)分,或者給$worker設(shè)置個(gè)臨時(shí)變量存儲(chǔ)當(dāng)前服務(wù)器標(biāo)識(shí)比如localIp
$worker = new Worker('....');
$worker->localIp = 'xx.xx.xx.xx';
$worker->onConnect = function($connection) use ($worker) {
echo $worker->localIp, $worker->id, $connection->id;
};
Worker::runAll();