powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Перевод url в числовой вид
18 сообщений из 18, страница 1 из 1
Перевод url в числовой вид
    #37823115
Arakas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет.
стоит задача: есть много реферерров, они хранятса в мускуле. по ним будет select, т.к рефереры в текстовом виде, думаю для большей производительности нужно их переводить в некий хеш.
т.е напр реферер http://yandex.ru/test.html будет иметь видь 34534593. ПО началу думал хешировать функцией мд5. но мд5 не только числа а еще и символы выдает. еще был вариант с CRC но читал что бывают совпадения на двух одинаковых строках, т.е это отбрасывается. и еще вариант с механизмом хеширования урлов для определения гуглеПР, например:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function GetPageRank($q,$host='toolbarqueries.google.com',$context=NULL) {
        $seed = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE. Yes, I'm talking to you, scammer.";
        $result = 0x01020345;
        $len = strlen($q);
        for ($i=0; $i<$len; $i++) {
                $result ^= ord($seed{$i%strlen($seed)}) ^ ord($q{$i});
                $result = (($result >> 23) & 0x1ff) | $result << 9;
        }
    if (PHP_INT_MAX != 2147483647) { $result = -(~($result & 0xFFFFFFFF) + 1); }
        $ch=sprintf('8%x', $result);
        return $ch;
          //$url='http://%s/tbr?client=navclient-auto&ch=%s&features=Rank&q=info:%s';
        //$url=sprintf($url,$host,$ch,$q);
        //@$pr=file_get_contents($url,false,$context);
        //return $pr?substr(strrchr($pr, ':'), 1):false;
}


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

Модератор: Arakas , пожалуйста, оформляйте код тегом SRC и попытайтесь соблюдать хотя бы основные правила русского языка.
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37823386
BelowZeroTooCold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arakas, ASCII кодировка переводит символы с числа
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37823390
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bTree
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37823391
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroTooColdArakas, ASCII кодировка переводит символы с числа
вам тока дай че-нить в ASCII попереводить
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37823392
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужна большая скорость, смотрите в сторону Redis, MongoDB и т.п.
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37823495
Шогал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в хэш переводить, то можно к примеру так:
Код: php
1.
2.
3.
function hash($str){
  return "0x".substr(sha1($str, 0, 16));
}


Получаем 64-битное число, которое можно хранить в MySQL поле типа BIGINT. В запрос подавать прямо в таком виде, мускул уже разберётся, что оно 16-ричное.
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37823530
Roin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ШогалЕсли в хэш переводить, то можно к примеру так:
Код: php
1.
2.
3.
function hash($str){
  return "0x".substr(sha1($str, 0, 16));
}


Получаем 64-битное число, которое можно хранить в MySQL поле типа BIGINT. В запрос подавать прямо в таком виде, мускул уже разберётся, что оно 16-ричное.

Скажите а могут быть совпадения хешей двух разных строк? т.е sha1 может такое допустить? например crc алгоритм может. читал что мд5 надо постаратся чтобы 2 разные строчки имели один хеш - это очень редко. а тут как с этим ?
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37823641
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
RoinШогалЕсли в хэш переводить, то можно к примеру так:
Код: php
1.
2.
3.
function hash($str){
  return "0x".substr(sha1($str, 0, 16));
}


Получаем 64-битное число, которое можно хранить в MySQL поле типа BIGINT. В запрос подавать прямо в таком виде, мускул уже разберётся, что оно 16-ричное.

Скажите а могут быть совпадения хешей двух разных строк? т.е sha1 может такое допустить? например crc алгоритм может. читал что мд5 надо постаратся чтобы 2 разные строчки имели один хеш - это очень редко. а тут как с этим ?
sha1($str) - нет, а вот substr(sha1($str), 0, 16) - вероятно может.
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37823685
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем переводить текст в цифры?
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37823707
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettА зачем переводить текст в цифры?
думаю сам ТС слабо понимает зачем. иначе бы не создал этой темы
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37824526
Roin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
r uHettА зачем переводить текст в цифры?
думаю сам ТС слабо понимает зачем. иначе бы не создал этой темы

Как это слабо понимаю ? я же написал в первом топике, что поиск по числовым полям быстрее ежели по текстовым
Или я неправ ?
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37824529
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На чем основано ваше убеждение?
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37825234
Roin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, я прошу совета. Читал что по возможности нужно делать поле целочисленным (и желательно даже беззнаковым) даюы выборки по такому полю идут быстрее и занимают такие поля меньше байтов.
Посоветуйте сталкивались может с подобными задачами когда приходилось хешировать в числа строки и потом работать уже с числами ?
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37825268
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roin,

вам ответили уже. используйте хеш md5 или sha. по ним и ищите.

или вы хотите свою написать? тогда приготовьтесь что по сложности это будет сопостовимо как раз с md5 или sha. ибо надо добиться уникальности хеша, небольшого размера.... а за этим стоит сложная математика... а следовательно время на проработку и реализацию алгоритма....
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37825308
Roin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, буду использовать мд5. Только каким типом делать поле в MySQL для него? не строковым же, подскажите
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37825411
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CHAR(32), BINARY(32)
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37825474
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только я все равно не понимаю, зачем хешировать? К тому же это приводит к избыточности данных.
...
Рейтинг: 0 / 0
Перевод url в числовой вид
    #37825475
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по крайней мере в данном случае.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Перевод url в числовой вид
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]