From 10dd818b139d5e1bb1ca9ec81edfb083ba9316b4 Mon Sep 17 00:00:00 2001 From: slawkens Date: Fri, 17 Jan 2025 22:49:40 +0100 Subject: [PATCH] Optimize $player->isOnline() function --- system/libs/pot/OTS_Player.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/system/libs/pot/OTS_Player.php b/system/libs/pot/OTS_Player.php index d0b6a831..5c1cbf87 100644 --- a/system/libs/pot/OTS_Player.php +++ b/system/libs/pot/OTS_Player.php @@ -108,6 +108,8 @@ class OTS_Player extends OTS_Row_DAO POT::SKILL_SHIELD => array('value' => 0, 'tries' => 0), POT::SKILL_FISH => array('value' => 0, 'tries' => 0) ); + + private static array $playersOnline; /** * Magic PHP5 method. * @@ -765,10 +767,18 @@ class OTS_Player extends OTS_Row_DAO public function isOnline() { - if($this->db->hasTable('players_online')) // tfs 1.0 - { - $query = $this->db->query('SELECT `player_id` FROM `players_online` WHERE `player_id` = ' . $this->data['id']); - return $query->rowCount() > 0; + if($this->db->hasTable('players_online')) {// tfs 1.0 + if (!isset(self::$playersOnline)) { + self::$playersOnline = []; + + $query = $this->db->query('SELECT `player_id` FROM `players_online`'); + + foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $item) { + self::$playersOnline[$item['player_id']] = true; + } + } + + return isset(self::$playersOnline[$this->data['id']]); } if( !isset($this->data['online']) )