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

已邀请:

walkor

赞同来自: lichao

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

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

$task = new AsyncTcpConnection('...');
$remote_ip = $_SERVER['REMOTE_ADDR'];
$task->onMessge = function($task, $msg)use($remote_ip){
// 异步任务中直接用$remote_ip
};

要回复问题请先登录注册