У меня есть большое количество (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, но я не хочу использовать ненужные ресурсы.