Как работает иптолонг - PullRequest
0 голосов
/ 02 марта 2011

Как все мы знаем, что long2ip работает как ip1.ip2.ip3.ip4 (123.131.231.212)

long ip => (ip1 * 256 * 256 * 256) + (ip2 * 256 * 256) + (ip3 * 256) + ip4
2072242132 => (123 * 256 * 256 * 256) + (131 * 256 * 256) + (231 * 256) + 212

Но какой будет псевдокод для преобразования этого числа обратно в IP-адрес?

Кроме того, что было бы наиболее подходящим способом хранения IP-адресов в MySQL для веб-сайта по анализу трафика, который будет иметь около 500 просмотров IP в секунду?

Было бы лучше, если бы таблица с уникальными идентификаторами создавалась для каждого IP и затем использовалась для поиска?

Спасибо

1 Ответ

2 голосов
/ 02 марта 2011
$long = ip2long("123.131.231.212");

$ip = array();
array_unshift($ip, $long & 0xFF);
array_unshift($ip, ($long >>= 8) & 0xFF);
array_unshift($ip, ($long >>= 8) & 0xFF);
array_unshift($ip, ($long >>= 8) & 0xFF);

// $ip =
// Array
// (
//     [0] => 123
//     [1] => 131
//     [2] => 231
//     [3] => 212
// )
...