@WTPIX

Обработка базы данных IP адресов с помощью PHP

Делаю Базу Данных IP адресов. Использоваться будет как справочник с возможностью добавления новых IP, удалению IP, поиску конкретного IP или подсети и самое главное выводу свободных IP адресов в конкретной подсети. Как сделать ввод данных, удаление и поиск конкретного IP или подсети знаю, а как осуществлять поиск свободного айпи в подсети?
Есть две мысли:
1)Забить весь диапазон в БД и потом сделать проверку по тому внесено ли имя, например.
2)Искать с помощью цикла. Этот вариант, наверное, лучше, но проблема с хранением данных. Если это будет текст, то я же не смогу сделать ему +1, а если INT или VARCHAR, то там некорректно данные выводятся. Как быть? Может у кого-то есть наработки в этой области?
  • Вопрос задан
  • 3921 просмотр
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
При запросе создавать временную таблицу, заполнять её всеми адресами подсети, затем исключать имеющиеся из основной таблицы. Там битовые операции наложения маски на адрес, при индексе по адресу должно летать.

P.s. Адреса храните же как unsigned int? В mysql есть полезные функции INET_ATON() и INET_NTOA() для преобразования IPv4 адресов из текста в целое и наоборот.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
difiso
@difiso
В параллельной вселенной я космонавт
Если не критично по БД, то лучше использовать PostgreSQL - у них даже тип данных для этого есть, а искать одно удовольствие.

Если же важен MySQL, то проще хранить 5 полей - 4 октета и количество бит в маске. А простейшую логику реализовывать уже самому.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы