还是那句话,异步环境中无法确认当前处理的任务是谁的,和会话有关的超全局变量$_SERVER $_SESSION都是无效的。比如5秒后执行一次异步任务,在这5秒内处理了很多客户端数据,那么超全局变量$_SERVER已经被重新赋值覆盖了很多次了,5秒后执行的异步任务中你敢直接使用这个值么?
你可以把这个值存储起来,等用到的时候提取使用即可,很简单嘛 例如:
$task = new AsyncTcpConnection('...'); $remote_ip = $_SERVER; $task->onMessge = function($task, $msg)use($remote_ip){ // 异步任务中直接用$remote_ip };
我是这样用的 $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));
还是那句话,异步环境中无法确认当前处理的任务是谁的,和会话有关的超全局变量$_SERVER $_SESSION都是无效的。比如5秒后执行一次异步任务,在这5秒内处理了很多客户端数据,那么超全局变量$_SERVER已经被重新赋值覆盖了很多次了,5秒后执行的异步任务中你敢直接使用这个值么?
你可以把这个值存储起来,等用到的时候提取使用即可,很简单嘛
例如:
我是这样用的
$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));