异步中也获取不到$_SERVER['REMOTE_ADDR']?

lichao
6614 1 0
1个回答

walkor

还是那句话,异步环境中无法确认当前处理的任务是谁的,和会话有关的超全局变量$_SERVER $_SESSION都是无效的。比如5秒后执行一次异步任务,在这5秒内处理了很多客户端数据,那么超全局变量$_SERVER已经被重新赋值覆盖了很多次了,5秒后执行的异步任务中你敢直接使用这个值么?

你可以把这个值存储起来,等用到的时候提取使用即可,很简单嘛
例如:

$task = new AsyncTcpConnection('...');
$remote_ip = $_SERVER;
$task->onMessge = function($task, $msg)use($remote_ip){
    // 异步任务中直接用$remote_ip
};
  • lichao 2015-10-06

    我是这样用的
    $client_ip = ClinentIp();
    $task = new AsyncTcpConnection('Text://127.0.0.1:8281');
    $task->connect();
    $task_data = array(
    'function'=>'reg',
    'args'=>$args,
    'client_ip'=>$client_ip,
    );
    $task -> send(json_encode($task_data));

年代过于久远,无法发表回答
🔝