skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.

Генерация уникального URL?

Имеется необходимость генерировать уникальный URL в связке php+mySQL по типу bit.ly или clck.ru.

Какие есть варианты? Генерация по unixtime, хеши?

URL нужен короткий, поэтому банальнейший вариант с MD5 отпадает сразу. Вариант с цифровым id плох тем, что сначала ссылки будут короткими, а потом удлинняться. Да и будут «Геты». Нужен такой вариант, чтобы «все равны».
  • Вопрос задан
  • 14861 просмотр
Решения вопроса 1
Bright
@Bright
По этим ссылкам можно найти исходники сокращалок:
code.google.com/p/phurl/
www.webresourcesdepot.com/7-open-source-and-free-url-shortener-scripts-to-create-your-own/
briancray.com/2009/08/26/free-php-url-shortener-script/

Насколько я знаю, все они работают по одному принципу. Типичную функцию для перевода можете посмотреть в исходнике phurl:
code.google.com/p/phurl/source/browse/phurl-includes/functions.php — функция compressNumber, которая некоторое случайное число переводит в 62-ричную систему счисления
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
@agul
Все зависит от того, сколько ссылок вы планируете сокращать. Если их будет много, то рано или поздно появятся ссылки, сокращенный URL которых будет длиннее, чем URL первых ссылок.
Ответ написан
AusTiN
@AusTiN
а что мешает брать MD5 от текущего юникстайма и обрезать по длине, брать, допустим, первые 5 символов?
Ответ написан
047
@047
Может быть, такое?
$unique_name = uniqid(md5(rand()), true);
Ответ написан
deactivatedtheelephant
@deactivatedtheelephant
Если вы делаете сервис коротких ссылок, вам все равно надо хранить в БД «длинные» ссылки. Так что для генерации можно использовать ID таблицы.
Ответ написан
@Qwerty-B
Поздно, но есть мысль (вдруг кому-нибудь пригодится) - ID из таблицы в 36-ричной системе счисления (0-9, a-z). А можно еще с другими символами, с разным регистром.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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