Ejemplo n.º 1
0
 /**
  * memcache对象获取方法
  *
  * @return object MemcacheManager
  */
 public static function instance()
 {
     if (!MemcacheManager::$_instance instanceof MemcacheManager) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
Ejemplo n.º 2
0
 /**
  * 用户缓存管理单例
  *
  * @access public
  * @param void
  * @return Memcache 单例对象
  */
 private static function getCacheInstance()
 {
     $get_instance = self::$cache_instance;
     if (is_null(self::$cache_instance)) {
         self::$cache_instance = MemcacheManager::instance();
     }
     return self::$cache_instance;
 }
Ejemplo n.º 3
0
 /**
  * retrieve a simple key/value pair from memcache
  *
  * @param String $key
  * @param String_type $ns
  * @param String $bucket
  */
 public static function retrieve($key, $ns = self::DEFAULT_NS, $bucket = self::DEFAULT_BUCKET)
 {
     $cache = MemcacheManager::getInstance()->cache;
     $cache->setBucket($bucket);
     $value = $cache->get($key);
     if ($value) {
         return $value;
     }
 }
Ejemplo n.º 4
0
 /**
  * API:获取大事件信息
  *
  * @access public
  * @param 无
  * @return JsonView 响应json
  */
 public function getBigMessage()
 {
     $requestParam = $this->getAllParameters();
     Logger::debug('requestParam:' . print_r($requestParam, true));
     $requestJsonParam = $this->getDecodedJsonRequest();
     Logger::debug('requestJsonParam:' . print_r($requestJsonParam, true));
     // 取缓存数据
     $cache = MemcacheManager::instance();
     $memcacheArr = $cache->get(self::BULLETIN_LIST);
     if ($memcacheArr) {
         $messageArr = $memcacheArr;
     } else {
         // 读取csv类
         $csv = new Parsecsv();
         $dir = IniFileManager::getRootDir() . "files/csv/" . self::BULLETIN_LIST . ".csv";
         $csv->auto($dir);
         $messageArr = $csv->data;
     }
     return $messageArr;
 }
Ejemplo n.º 5
0
## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,           ##
## EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                          ##
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ##
## Author of file: Peter Schmalfeldt                                           ##
#################################################################################
/**
 * @category Memcache Manager
 * @package MemcacheManager
 * @author Peter Schmalfeldt <*****@*****.**>
 * @license http://www.apache.org/licenses/LICENSE-2.0
 * @link http://code.google.com/p/memcachemanager/
 * @link http://groups.google.com/group/memcachemanager
 */
include 'classes/class_MemcacheManager.php';
// creat memcache object
$mc = new MemcacheManager();
// add servers
$mc->addserver('localhost', 11211);
$mc->addserver('localhost', 11212);
$mc->addserver('localhost', 11213);
// create some date to store
$init_data = array('username' => 'memcachehater', 'email' => '*****@*****.**', 'displayname' => 'Memcache Hater', 'location' => array('country' => 'USA', 'state' => 'Missouri', 'city' => 'St. Louis'));
$replace_data = array('username' => 'memcachelover', 'email' => '*****@*****.**', 'displayname' => 'Memcache Lover', 'location' => array('country' => 'USA', 'state' => 'Oregon', 'city' => 'Portland'));
// start making output readable in browser
echo '<pre>';
// store data
$mc->add('memcachelover', $init_data, 0, true, true, true);
// adds the key with JSON encoding, encryption and compression
$mc->replace('memcachelover', $replace_data, 0, true, true, true);
// replaces the key with JSON encoding, encryption and compression
// retrieve data
Ejemplo n.º 6
0
 /**
  * API:读取CSv
  *
  * @access public
  * @param $file 路径 $str 读取条件OR
  * @return array()
  */
 public function readCsv($file, $str = null)
 {
     //先读缓存,foreach需要的数据,没有找到,在用condition读取CSV
     $fileName = basename($file, ".csv");
     /*$memcached = new Memcache();
       $memcached->connect("localhost", 11211);
       $CharacterDataArr=$memcached->get( $fileName );*/
     $cache = MemcacheManager::instance();
     $CharacterDataArr = $cache->get($fileName);
     if (!$CharacterDataArr) {
         $csv = new Parsecsv();
         $csv->conditions = $str;
         $csv->auto($file);
         $CharacterDataArr = $csv->data;
         return $CharacterDataArr;
     } else {
         if (is_null($str)) {
             return $CharacterDataArr;
         }
         $conditionArr = explode(" OR ", $str);
         foreach ($conditionArr as $key => $value) {
             $condition = explode(" = ", $value);
             $message[$key][$condition[0]] = $condition[1];
         }
         foreach ($message as $key => $value) {
             foreach ($value as $key2 => $value2) {
                 foreach ($CharacterDataArr as $key3 => $value3) {
                     if ($value2 == $CharacterDataArr[$key3][$key2]) {
                         $arr[] = $CharacterDataArr[$key3];
                     }
                 }
             }
         }
         return $arr;
     }
 }
Ejemplo n.º 7
0
 /**
  * deletes object from memcache before deleting it from the db
  *
  * @author Matthias Pfefferle
  * @param Doctrine_Event $pEvent
  */
 public function preDelete(Doctrine_Event $pEvent)
 {
     $lInvoker = $pEvent->getInvoker();
     MemcacheManager::getInstance()->getCache()->remove($lInvoker->getMemcacheId());
 }
Ejemplo n.º 8
0
 /**
  * API:获取签到信息
  *
  * @access public
  * @param mixed $login_info 签到缓存信息
  * @return $loginArr 返回签到信息数组
  */
 public function getUserLoginInfo($login_info = "")
 {
     // 无初始数据
     if ($login_info == "") {
         $loginArr['con_day'] = 0;
         $loginArr['total_day'] = 0;
         // $loginArr['time'] = time();
         $loginArr['type'] = 0;
     } else {
         // 非当天首次登陆
         if ($login_info['time'] > strtotime(date('Y-m-d', time()))) {
             return false;
         }
         $loginArr['con_day'] = $login_info['con_day'];
         $loginArr['total_day'] = $login_info['total_day'];
         //$loginArr['time'] = time();
         $loginArr['type'] = 0;
         // // 非连续签到
         // if( strtotime( date( 'Y-m-d',time() ) ) - $login_info['check_time'] > 86400 )
         // {
         //     $loginArr['con_day'] = 1;
         // }
     }
     // 获取签到奖励内容
     $cache = MemcacheManager::instance();
     $memcacheArr = $cache->get(self::LOGIN_FILE);
     if ($memcacheArr) {
         $messageArr = $memcacheArr;
     } else {
         // 读取csv类
         $dir = IniFileManager::getRootDir() . "files/csv/" . self::LOGIN_FILE . ".csv";
         /*$str = "chest_id = " . 1;
           $messageArr = Util::readCsv( $dir, $str );*/
         $csv = new Parsecsv();
         $csv->auto($dir);
         $messageArr = $csv->data;
         /*echo "<pre>";var_dump($messageArr);exit;
         
                     $loginArr['reward'] = $messageArr[0];*/
     }
     /********************* 更新奖励列表 *****************/
     // 统计箱子个数
     $num = 1;
     foreach ($messageArr as $key => $value) {
         if ($value['chest_id'] == $messageArr[$key + 1]['chest_id']) {
             $rewardNumArr[$value['chest_id']] = ++$num;
         } else {
             $num = 1;
         }
     }
     // 随机箱子内容
     $num = 0;
     foreach ($rewardNumArr as $key => $value) {
         $rewardArr[$key] = $messageArr[$num + rand(0, $value - 1)];
         $probabilityArr[$key] = $rewardArr[$key]['probability'];
         $num = $num + $value;
     }
     $checkNum = Util::extractRandomAnswer($probabilityArr);
     $loginArr['rewardArr']['check'] = $checkNum;
     $loginArr['rewardArr']['box_info'] = $rewardArr;
     return $loginArr;
 }
Ejemplo n.º 9
0
 /**
  * use our memcache instead database when calling method
  *
  * @author Matthias Pfefferle
  * @param int $pPk
  * @return array of user objects
  */
 public function retrieveByPkTableProxy($pPk)
 {
     $lInvoker = $this->getInvoker();
     $lClassName = get_class($lInvoker);
     $lObject = null;
     $lMemcacheId = strtolower($lClassName) . "-" . $pPk;
     // first try GLOBALS cache
     if (isset($GLOBALS['CACHE'][strtoupper($lClassName)][$pPk])) {
         $lObject = $GLOBALS['CACHE'][strtoupper($lClassName)][$pPk];
         if ($lObject) {
             $cache = 'yiidGlobalCache';
         }
     } else {
         // if not found try memcached
         $lObject = self::getFromMemcache($lMemcacheId);
         $cache = 'yiidMemcache';
     }
     if ($lObject) {
         try {
             sfContext::getInstance()->getLogger()->info('{yiidGlobalCache} found a ' . $lClassName . ' with id ' . $pPk . ' in ' . $cache);
         } catch (Exception $e) {
         }
         // store in GLOBALS cache
         $GLOBALS['CACHE'][strtoupper($lClassName)][$pPk] = $lObject;
         return $lObject;
     } else {
         $lObject = $lInvoker->getTable()->find($pPk);
         if ($lObject) {
             MemcacheManager::getInstance()->getCache()->set($lMemcacheId, serialize($lObject));
             $GLOBALS['CACHE'][strtoupper($lClassName)][$pPk] = $lObject;
             return $lObject;
         } else {
             return null;
         }
     }
 }