Beispiel #1
0
 /**
  * choose master or slave
  * 
  * @param string $sql 
  */
 private static function _switch($sql)
 {
     $select = false;
     $uid = Login::GetCurrentUserId();
     $callback = 'DB::_switch';
     $args = array($uid);
     $key = Memcache::GetFunctionKey($callback, $args);
     if (false === stripos($sql, 'SELECT')) {
         if ($uid) {
             // master
             $flag = 0;
             $value = 1;
             Memcache::Instance()->Set($key, $value, $flag, self::$life);
         }
     } elseif (rand(0, 1)) {
         // %50 to master
     } else {
         $value = Memcache::Instance()->Get($key);
         if (!$value) {
             //slave
             $select = 1;
         }
     }
     return self::_getConn($select);
 }