Beispiel #1
0
 /**
  * 获取一个随机Host数组
  *
  * @param $group
  * @return array|bool
  */
 public static function getRandHostData($group)
 {
     $time = self::$lastChangeTime->get();
     if (self::$lastTime < $time) {
         # 需要更新数据
         self::$hostByGroup = [];
         self::$lastTime = $time;
         foreach (self::$table as $v) {
             self::$hostByGroup[$v['group']][$v['id']] = $v['id'];
         }
     }
     if (isset(self::$hostByGroup[$group]) && self::$hostByGroup[$group]) {
         $hostId = array_rand(self::$hostByGroup[$group]);
         return self::$table->get("{$group}_{$hostId}");
     } else {
         return false;
     }
 }
Beispiel #2
0
 protected function _driverSet($k, $v)
 {
     switch ($this->_type) {
         case 'mysql':
             foreach ($v as &$tmp) {
                 $tmp = "'" . $this->_driver()->real_escape_string($tmp) . "'";
             }
             unset($tmp);
             $k = $this->_driver()->real_escape_string($k);
             $sql = 'INSERT INTO `' . $this->_link['table'] . '`, (`_key`, `' . implode('`, `', array_keys($v)) . '`) VALUES (\'' . $k . '\', ' . implode(', ', $v) . ')';
             $sql .= 'ON DUPLICATE KEY UPDATE ';
             foreach ($v as $kk => $vv) {
                 $sql .= "`{$kk}` = {$vv}, ";
             }
             $sql = rtrim($sql, ' ,');
             # INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c = 1;
             $rs = $this->_driver()->query($sql);
             return $rs ? true : false;
         case 'sqlite':
             break;
         case 'redis':
         case 'ssdb':
             return $this->_driver()->hSet($this->_link['path'], $k, serialize(parent::get($k)));
         case 'rocksdb':
             if (!$this->_driver) {
                 $this->_driver = new \RocksDB($this->_link['path']);
             }
             return $this->_driver->set($k, serialize($v));
     }
     return false;
 }