Лучший способ проверить, находится ли один IP-адрес в любом диапазоне в пределах большого диапазона IP-адресов (PHP) - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть большое количество (1000 или более) диапазонов IP-адресов. Мне нужно проверить IP каждого посетителя сайта по различным диапазонам.

Сейчас я планирую сохранить диапазоны в виде одного двумерного массива, например:

<?php $IP_ranges = array 
     (
     array("low_ip ","high_ip "),
     array("low_ip ","high_ip "),
     array("low_ip ","high_ip "),
     //etc
     ); ?>

Таким образом, первый массив может быть от 100.00.00.1 до 100.00.00.90.

Затем я проверю, находится ли IP в любом из диапазонов, итерируя по массиву с foreach l oop, преобразовывая IP-адреса в числа с помощью ip2long (), а затем проверяя, является ли IP пользователя в диапазоне делать что-то вроде этого:

if ($ip <= $high_ip && $low_ip <= $ip) {
   return true;
}

У меня вопрос, является ли это наиболее эффективным способом проверки, находится ли данный ip в каком-либо из сохраненных диапазонов?

Мне придется сделать это один раз для каждого посетителя сайта c. Это не супер-трафик c, но я не хочу использовать ненужные ресурсы.

...