swoole不明白在workerstart创建的对象挂到swoole_server对象上多个客户端是怎么隔离开的?

下面是官方的写法

$serv = new swoole_server("0.0.0.0", 9502);

//必须在onWorkerStart回调中创建redis/mysql连接
$serv->on('workerstart', function($serv, $id) {
    $redis = new redis;
    $redis->connect('127.0.0.1', 6379);
    $serv->redis = $redis;
});

$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data) { 
    $value = $serv->redis->get("key");
    $serv->send($fd, "Swoole: ".$value);
});

$serv->start();

对于多个客户端来说,访问$serv->redis,指向的是同一个对象吧,怎么分离的呢?

我把代码写在一个类里面的,我不太清楚start事件和workstart事件以及第一次recive时创建的对象应该保存到哪里,直接

$a=1(当前上下文)
$this->a=1(类上)
$serv->a=1(服务对象上)

写法上有什么区别吗?如何根据不同的客户端隔离开的呢?比如客户端并发10W,我应该用数据库连接池,比如100个连接池,这些变量不知道挂载到哪里存起来,客户端是长连接,第一次会发送客户端的唯一标识mac,我得存起来,后面不发送了,我得从我自己的数据里面取出来,不太会写啊

阅读 2.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题