synchronized(function () use ($tag,&$state) { global $gMessageStates; $finded = false; foreach ($gMessageStates as $key => $val) { if($key == $tag) { $finded = true; $state = $gMessageStates[$tag]; if($state == true) { $gMessageStates[$tag] = false; break; } } } if($finded == false) { $gMessageStates[$tag] = false; $state = true; } }); return $state; } static public function init() { global $gMessageStates; $gMessageStates['tags'] = true; } } function handler_redis($redis, $chan, $msg) { if (defined('UGC_SUBSCRIBER_PROC') && UGC_SUBSCRIBER_PROC == true) { if($chan == 'special') { UgcHandler::onSpecial($msg); } elseif($chan == 'follow') { UgcHandler::onFellow($msg); } elseif ($chan == 'inviter') { UgcHandler::onInviter($msg); } else { Log::record("message: {$chan} -- {$msg}",Log::DEBUG); } } else { $cur_trd = Thread::getCurrentThread(); if(!is_null($cur_trd)) { $cur_trd->dispatch($chan,$msg); } } }