LINUX.ORG.RU

хранить в mysql базе 200 тыс айпи


0

0

понимаю что не совсем по теме форума, но все же.
php скрипт, при запросе страницы делает select из базы по айпи, если же айпи нету в базе то делает insert. раньше хранил айпи в базе как хеш crc32(IP). может есть лучшее решение чем crc32? хранить айпи в пямом виде не очень хорошо, тк получается тип varchar. главное - производительность.

IPv4 - 32-битное число. Нотация A.B.C.D записывает его в 256-ричной системе счисления.

Я волнуюсь за наше подрастающее поколение.

Macil ★★★★★
()
Ответ на: комментарий от evolutionX

я вот тоже волнуюсь за наше подрастающее поколение, весь подьезд зассали своим жигулевским. причем на год меня младше) но это офф))

evolutionX
() автор топика
Ответ на: комментарий от evolutionX

Еще раз. IPv4 - 32-битное число. Нотация A.B.C.D записывает его в 256-ричной системе счисления. Тебе нужно сварганить перевод числа в 256-ричной системе в двоичную. Результатом будет int32.

Macil ★★★★★
()
Ответ на: комментарий от Macil

ты кому сказки про системы счисления рассказываешь дружище а? может расскажешь лучше как софтайс на хр сп3 под варей поставить?

evolutionX
() автор топика
Ответ на: комментарий от evolutionX

>ты кому сказки про системы счисления рассказываешь дружище а?

Тебе, милый, тебе. Ибо, судя по всему, ты нифига не врубаешься.

Macil ★★★★★
()
Ответ на: комментарий от Macil

а какой тип у 256 ричной системы? int, расскажи. не врубаюсь. для меня это 3 ячейки десятичной. думаешь быстрее будет в двоичную перекинуть? блин да int оно и так будет. ты прям написал бесконечный цикл почти) все равно надо сначала разделить в массив на 4 ячейки, и получится 4ре Int. модет лучще inet_aton?
возможно не врубаюсь, бошка уже кипит

evolutionX
() автор топика
Ответ на: комментарий от evolutionX

inet_aton именно это и делает.

Формула перевода A.B.C.D в int32 следущая: 256^0*D+256^1*C+256^2*B+256^3*A

Подробнее http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D0%BE%D0%BD...

Реализаций можно сделать множество. Вместо возведения в степень лучше использовать сдвиг влево (умножение на 2) или константы. Вместо плюс - AND.

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

Macil ★★★★★
()
Ответ на: комментарий от Macil

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

evolutionX
() автор топика
Ответ на: комментарий от evolutionX

да и в 26 лет идти - ну нах. пусть идут те у кого все хорошо сложилось)

evolutionX
() автор топика
Ответ на: комментарий от evolutionX

>к сожалению у меня не хватило денег на места принудительного получения знаний

Плохо. Очень и очень плохо. Советую не затягивать с направлением себя любимого в оные места.

Macil ★★★★★
()
Ответ на: комментарий от Macil

> Вместо возведения в степень лучше использовать

На PHP??? Жжжоте :-)

no-dashi ★★★★★
()
Ответ на: комментарий от evolutionX

> может расскажешь лучше как софтайс на хр сп3 под варей поставить?

Я так понимаю, для тебя это крайне актуальный вопрос? :-)

no-dashi ★★★★★
()
Ответ на: комментарий от evolutionX

>просто видел что делают через crc.

где видел?
взглянуть бы на код

x905 ★★★★★
()
Ответ на: комментарий от evolutionX

>может расскажешь лучше как софтайс на хр сп3 под варей поставить?

расскажи мне, только сначала переведи, я не понимаю марсианских диалектов

wlan ★★
()
Ответ на: комментарий от Macil

да уже бегу. к перподу по c++ мтусишному, денег за экзамен нести тк у него это средство наживы, вымогать за экзамен. еще он книжку типа пишет говорил. про маршрутизацию. типа говорит я придумал новый алго для роутеров. пакеты лучше будут и быстрее по сети расходится! допустим если несколько каналов то будет выбирваться более свободный и шустрый. я думаю ну писец. откуда такие берутся. допустим у меня два канала, по гигабиту, один допустим стоит $3000 в мес, второй $10000 в мес. и я второй использую как резевр. даже не плачу за него полную сумму а только за бандвич когда первый падает. и чего, в час пик приходит чудо-пакет который все переключает на шустрый канал? а вместе с пакетом денюжка в конверте тоже приходит что ли? или я мать тереза, должен по воле пакетной перекинуть все на дорогие каналы? и ЧЕМУ такой человек может научить? полная оторванность от реальности.

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

evolutionX
() автор топика
Ответ на: комментарий от wlan

softice это такой дебаггер для винды, используется для реверсинга. люблю я вечерам малвары ковырять. встает только под винду сп2 которая по человечиски не обновляется)

evolutionX
() автор топика

Си и libdb, храним ИПв4 в unsigned int.

scaldov ★★
()
Ответ на: комментарий от evolutionX

вопрос в том каким образом $_SERVER['REMOTE_ADDR'] в int лушче всего преобразовать.

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

a.b.c.d == a + b*256 + c*256^2 + d*256^3

Хранить как unsiged 32bit int.

Deleted
()
Ответ на: комментарий от evolutionX

Выглядеть это будет как-то так. За этот код прошу меня ногами не бить, так как на PHP никогда ничего не писала.

function checkRange($num)
{
    if ((!is_int($num)) or ($num < 0) or ($num > 255)) return false;
    return true;
}

//IP address is stored in $ip

$arr = explode('.',$ip);

if (count($arr) != 4) die("Invalid IPv4 address"); //Or any other error handling of your choice

$a = intval($arr[0]);
$b = intval($arr[1]);
$c = intval($arr[2]);
$d = intval($arr[3]);

if (!(checkRange($a) and checkRange($b) and checkRange($c) and checkRange($d))) die("Invalid IPv4 address");

$value = $a + 256*$b + 65536*$c + 16777216*$d; //this is the value to be stored in the database

lena
()
Ответ на: комментарий от evolutionX

>да уже бегу.

Не выпендривайся.

>ЧЕМУ такой человек может научить?


Теории, молодой человек. Слыхал о таком звере?

Без глубокой теоретической проработки ты ничего кроме индусокода ты писать не сможешь. А то что ты написал - самый настоящий индусокод.

Macil ★★★★★
()
Ответ на: комментарий от Macil

Без глубокой теоретической проработки ты ничего кроме индусокода ты писать не сможешь.

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

lena
()
Ответ на: комментарий от lena

извинте я изучал прогармминг когда мне было я не помню сколько, вобщем я читал журналы наука и жизнь, там была рубрика, выучил бейсик, писал первые программы на бумажке, потом лет через 5 купили мне мк-85 может кто помнит такое чудо советское, целых 4кб памяти и бейсик на борту, потом мне достался 80286 украденный с одного заводика, вобщем с программингом все ок, так вот мне чучело которое только хочет копеечку оно мне что про алгоритмы расскажет? извините теорма пифагора когда она обьснялась всем малолетним опездолам в то время, уже была у меня на листике написана в виде проги на бейсике. такие вот дела. сорри за опечатки я с девушкой вино пью)

evolutionX
() автор топика
Ответ на: комментарий от lena

>А какие именно разделы теории

Сложный вопрос. Здесь скорее важнее объяснять с точки зрения теории то, что ты видишь на практике.

Изучать информационные технологии, благо их дофига всяких разных. Изучать различные языки программирования.

Стремиться понять мотивацию (для чего и почему) разработок с которыми тебе приходится сталкиваться.

Учиться проектировать. Учиться интегрировать уже существующее, но всегда понимать что и как именно ты это делаешь.

Macil ★★★★★
()

быдло на моем ЛОРе? No way.

JFreeM ★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.