如何随时获取当前请求ID/$connection->id呢?

kinvar

问题描述

比如这个简单的例子

$http_worker->onMessage = function(TcpConnection $connection, Request $request)
{

$req_id = $connection->id; //这样可以获取当当前连接ID

};
但是我的程序封装了很多代码/类/函数,我的程序需要兼容传统php-fpm模式,我想在某个函数里面获取到这个ID,该怎么实现呢,不可能一直传参下去吧?像swoole就可以通过\Co::getCid() 在任何地方都可以获取到当前的携程ID,workerman应该怎么实现呢?

初次使用workerman,望各位大佬能帮忙解答一下,或者有其它更好的办法么?

474 1 0
1个回答

damao

这就是php基本用法吧

class Co {
   public static $id;
   public static function id($id)
   {
       if ($id) {
           static::$id = $id;
       }
       return static::$id;
   }
}
$http_worker->onMessage = function(TcpConnection $connection, Request $request)
{
    // 业务开始时设置id
    \Co::id($connection->id);
    // 真实业务省略...
    // 获取id
    echo \Co::id();
};
  • kinvar 2024-05-09

    多谢。刚从swoole过来,swoole有协程,不能放在静态变量里面。才发现workerman是一个进程同时只执行一个请求的,这样就可以

×
🔝