From 2367d4a1d0e4fe0b8f29f2eb57e4d94118734f93 Mon Sep 17 00:00:00 2001 From: Rekryt Date: Tue, 29 Oct 2024 16:57:31 +0300 Subject: [PATCH] feat: optimize cidr processing --- src/Domain/Helper/IP4Helper.php | 15 +++++++++------ src/Domain/Helper/IP6Helper.php | 15 +++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/Domain/Helper/IP4Helper.php b/src/Domain/Helper/IP4Helper.php index 957ad50..357e5d0 100644 --- a/src/Domain/Helper/IP4Helper.php +++ b/src/Domain/Helper/IP4Helper.php @@ -16,15 +16,18 @@ class IP4Helper { continue; } async(function () use ($ip, $i, $count, &$results) { + if (self::isInRange($ip, $results)) { + return; + } + if (CIDRStorage::getInstance()->has($ip)) { $searchArray = CIDRStorage::getInstance()->get($ip); $results = array_merge($results, self::trimCIDRs($searchArray)); - App::getLogger()->debug($ip . ' -> ' . json_encode($searchArray), [$i + 1 . '/' . $count]); - return; - } - - if (self::isInRange($ip, $results)) { + App::getLogger()->debug($ip . ' -> ' . json_encode($searchArray), [ + $i + 1 . '/' . $count, + 'from cache', + ]); return; } @@ -72,7 +75,7 @@ class IP4Helper { CIDRStorage::getInstance()->set($ip, $searchArray); $results = array_merge($results, self::trimCIDRs($searchArray)); - App::getLogger()->debug($ip . ' -> ' . json_encode($searchArray), [$i + 1 . '/' . $count]); + App::getLogger()->debug($ip . ' -> ' . json_encode($searchArray), [$i + 1 . '/' . $count, 'found']); } else { App::getLogger()->error($ip . ' -> CIDR not found', [$i + 1 . '/' . $count]); } diff --git a/src/Domain/Helper/IP6Helper.php b/src/Domain/Helper/IP6Helper.php index b576692..1866aeb 100644 --- a/src/Domain/Helper/IP6Helper.php +++ b/src/Domain/Helper/IP6Helper.php @@ -16,15 +16,18 @@ class IP6Helper { continue; } async(function () use ($ip, $i, $count, &$results) { + if (self::isInRange($ip, $results)) { + return; + } + if (CIDRStorage::getInstance()->has($ip)) { $searchArray = CIDRStorage::getInstance()->get($ip); $results = array_merge($results, self::trimCIDRs($searchArray)); - App::getLogger()->debug($ip . ' -> ' . json_encode($searchArray), [$i + 1 . '/' . $count]); - return; - } - - if (self::isInRange($ip, $results)) { + App::getLogger()->debug($ip . ' -> ' . json_encode($searchArray), [ + $i + 1 . '/' . $count, + 'from cache', + ]); return; } @@ -72,7 +75,7 @@ class IP6Helper { CIDRStorage::getInstance()->set($ip, $searchArray); $results = array_merge($results, self::trimCIDRs($searchArray)); - App::getLogger()->debug($ip . ' -> ' . json_encode($searchArray), [$i + 1 . '/' . $count]); + App::getLogger()->debug($ip . ' -> ' . json_encode($searchArray), [$i + 1 . '/' . $count, 'found']); } else { App::getLogger()->error($ip . ' -> CIDR not found', [$i + 1 . '/' . $count]); }