Exemplo n.º 1
0
 public function __invoke(RequestInterface $requestInterface, ResponseInterface $responseInterface, $next)
 {
     if (!$this->clientIdentifier) {
         if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
             $reformattedSource = preg_replace("/[.:]/", "_", $_SERVER['HTTP_CF_CONNECTING_IP']);
         } else {
             $reformattedSource = preg_replace("/[.:]/", "_", $_SERVER['REMOTE_ADDR']);
         }
     } else {
         $reformattedSource = $this->clientIdentifier;
     }
     $requestCount = count($this->redis->keys(sprintf("rl.%s.*", $reformattedSource)));
     if ($requestCount > $this->maxRequests) {
         $responseInterface = $responseInterface->withStatus(429);
         $responseInterface->getBody()->write("Rate limit exceeded.");
         return $responseInterface;
     } else {
         $key = sprintf("rl.%s.%s", $reformattedSource, microtime(true));
         $this->redis->set($key, 1);
         $this->redis->expire($key, $this->expire);
         $responseInterface = $next($requestInterface, $responseInterface);
     }
     return $responseInterface;
 }
Exemplo n.º 2
0
 /**
  * 合并夺宝数据
  */
 protected function merge_grab_treasure()
 {
     $source_redis = new RedisClient(array('host' => $this->_source_host, 'port' => $this->_redis_port));
     $target_redis = new RedisClient(array('host' => $this->_target_host, 'port' => $this->_redis_port));
     echo "move data|player_sum_fpower_list \n";
     $key = "data|player_sum_fpower_list";
     $data = $source_redis->zsets_all($key);
     if ($data) {
         foreach ($data as $player_id) {
             $score = $source_redis->zsets_score($key, $player_id);
             $result = $target_redis->zsets_add($key, $player_id, $score);
             if (!$result) {
                 file_put_contents("data|player_sum_fpower_list.log", "{$player_id}\n", FILE_APPEND);
             }
         }
     }
     echo "move data|player_sum_fpower_list end\n";
     $hash_data_keys = array('data|player_cross_info', 'data|grab_treasure', 'data|grab_treasure_log');
     foreach ($hash_data_keys as $hash_key) {
         echo "move {$hash_key}\n";
         $keys = $source_redis->keys("{$hash_key}:*");
         if ($keys) {
             foreach ($keys as $key) {
                 $data = $source_redis->hash_get($key);
                 if ($data) {
                     $result = $target_redis->hash_set($key, $data);
                     if (!$result) {
                         file_put_contents("{$hash_key}.log", "{$key}\n", FILE_APPEND);
                     }
                 }
             }
         }
         echo "move {$hash_key} end\n";
     }
     echo "move data|grab_treasure_log_rank \n";
     $keys = $source_redis->keys("data|grab_treasure_log_rank:*");
     if ($keys) {
         foreach ($keys as $key) {
             if ($target_redis->exists($key)) {
                 continue;
             }
             $data = $source_redis->list_all($key);
             if ($data) {
                 foreach ($data as $val) {
                     $result = $target_redis->list_push($key, $val);
                     if (!$result) {
                         file_put_contents("data|grab_treasure_log_rank.log", "{$val}\n", FILE_APPEND);
                     }
                 }
             }
         }
     }
     echo "move data|grab_treasure_log_rank end\n";
     echo "move data|player_grab_treasure_safe_mark\n";
     $keys = $source_redis->keys("data|player_grab_treasure_safe_mark:*");
     if ($keys) {
         foreach ($keys as $key) {
             $cd = $source_redis->ttl($key);
             $result = $target_redis->set($key, 0, $cd);
             if (!$result) {
                 file_put_contents("data|player_grab_treasure_safe_mark.log", "{$key}\n", FILE_APPEND);
             }
         }
     }
     echo "move data|player_grab_treasure_safe_mark end\n";
     echo "move data|player_grab_treasure_battle_lock\n";
     $keys = $source_redis->keys("data|player_grab_treasure_battle_lock:*");
     if ($keys) {
         foreach ($keys as $key) {
             $cd = $source_redis->ttl($key);
             $result = $target_redis->set($key, 1, $cd);
             if (!$result) {
                 file_put_contents("data|player_grab_treasure_battle_lock.log", "{$key}\n", FILE_APPEND);
             }
         }
     }
     echo "move data|player_grab_treasure_battle_lock end\n";
     $source_redis->close();
     $target_redis->close();
 }