DudeGeo

12
N
На сайте с 06.05.2007
Offline
419
#11

Да без разницы. Cамая экстремально быстрая реализация на php должна просто иметь линейный файл с записями достаточно крупными по /22, то есть по 1024 IP. Одного байта хватит на номер страны, значит файл 2^32/1024= 4194304 байт.

Одно позиционирование и считывание одного байта - вот и весь поиск :)

Хотя стоит проверить эту идею. Может быть найдутся неправильные страны.

Кнопка вызова админа ()
[Удален]
#12
netwind:
Одного байта хватит на номер страны, значит файл 2^32/1024= 4194304 байт.

увы тут до 1го байта на ип надо дробить, страны да, херовые попадаются ... мне даже примеры ктото приводил, прошлая реализация моя так и работала) по 256 ипов только были диапазоны

N
На сайте с 06.05.2007
Offline
419
#13

bearman, ну вот прошлая была еще быстрее ? даже по 256 штук для php-реализации это выгоднее, чем любой другой метод. 16 мб это мелочь, а не файл.

а что если каждый блок "округлить" по превалирующей стране? в целях защиты от ддос, например, высокая точность не нужна.

[Удален]
#14
netwind:
а что если каждый блок "округлить" по превалирующей стране?

можно, почему нет то)

я на данный момент на этом остановлюсЬ, в след раз сделаю city базу, когда будет след раз - хз))

bearman, ну даже до 256 php-реализация будет быстрее. 16 мб это мелочь, а не файл.

у меня прошлая версия это и делала, базу билдила с ripn.net, но мне много человек засрали их базу сославшись на максмайнд мол у них лучше, поэтому и занялся вопросом снова

bearman добавил 30.04.2010 в 05:32

жаль базу я затер ... проверил бы разницу в скорости)

bearman добавил 30.04.2010 в 05:39

netwind:
ну вот прошлая была еще быстрее ?

незаметил вопрос, да, быстрее.

нашел кстати в архивах базу и файлы, сейчас проверю разницу)

N
На сайте с 06.05.2007
Offline
419
#15

не, с city и org такая халява уже не прокатит.

[Удален]
#16
debian:~/mygeo# php index.php

10000 ips for 0.0737130641937 seconds.<br/>1 ip for 0.000007

ну вот, чтото такое)

bearman добавил 30.04.2010 в 05:43

netwind:
с city и org такая халява уже не прокатит.

будет время, посмотрю)) интересная "область", а то ДЛЕ, ворпрессы и тп... тошнит :)

bearman добавил 30.04.2010 в 05:45

function search($ip)
{
$ip = substr($ip,0,strrpos($ip,".")+1)."0";
$ip = ip2long($ip);
$offset = sprintf("%u",$ip) / 256;
fseek($this->fh,$offset);
$ips = fread($this->fh,1);
return ord($ips);
}

вда .. ну и код, можно проще)

bearman добавил 30.04.2010 в 05:52

10000 ips for 0.0541660785675 seconds.<br/>1 ip for 0.000005
debian:~/mygeo#

причесал )))

function search($ip)
{
$offset = floor(ip2long($ip) / 256);
fseek($this->fh,$offset);
return ord(fread($this->fh,1));
}
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий