_getRedis(self::ANNC_REDIS_KEY); if ($redis->exists(self::ANNC_REDIS_KEY)){ $data = json_decode($redis->get(self::ANNC_REDIS_KEY),true); }else{ $data = $this->_findAnnc(); if ($data){ $redis->set(self::ANNC_REDIS_KEY,json_encode($data)); $redis->pexpire(self::ANNC_REDIS_KEY , max(0, min(15, myself()->_getNowTime() - $data['end_time'])) * 1000); } } myself()->_rspData($data); } private function _findAnnc(){ $seconds = myself()->_getNowTime() - myself()->_getNowDaySeconds(); $data = array(); $row = myself()->_getConfDbMysql()->execQueryOne( 'SELECT * FROM t_game_annc WHERE :nowtime >= begin_date AND :nowtime <= end_date AND is_open = 1 AND :seconds >= begin_time AND :seconds <= end_time', array( ':nowtime' => myself()->_getNowTime(), ':seconds' => $seconds, ) ); if ($row){ $data = array( 'id' => $row['uniid'], 'title' => $row['title'], 'content' => $row['content'], 'end_time' => $row['end_time'] ); } return $data; } }