還是那句話,異步環(huán)境中無法確認(rèn)當(dāng)前處理的任務(wù)是誰的,和會(huì)話有關(guān)的超全局變量$_SERVER $_SESSION都是無效的。比如5秒后執(zhí)行一次異步任務(wù),在這5秒內(nèi)處理了很多客戶端數(shù)據(jù),那么超全局變量$_SERVER已經(jīng)被重新賦值覆蓋了很多次了,5秒后執(zhí)行的異步任務(wù)中你敢直接使用這個(gè)值么?
你可以把這個(gè)值存儲(chǔ)起來,等用到的時(shí)候提取使用即可,很簡(jiǎn)單嘛
例如:
$task = new AsyncTcpConnection('...');
$remote_ip = $_SERVER;
$task->onMessge = function($task, $msg)use($remote_ip){
// 異步任務(wù)中直接用$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));