Skapa din egen URL-förkortare

Vill du också ha en egen personlig URL-förkortare? Jag skapade ju en för några månader som hittas på to.ly och redan så har 100 000 url:er förkortas. Tjänsten har ett API samt lite plugins till bl.a IE och Firefox.

Nu tänkte jag dela med mig av de erfarenheter jag har erhålligt genom att skapa denna tjänst och sammanfattar det nedan.

1. Domännamn

Hela poängen att ha en URL-förkortare är ju att skapa korta URL:er och då är ju ett kort domännamn en bra grej att ha. Några populära TLD:er för URL-förkortare är LY (Libyen) samt GD (Grenada) och vill du veta hur du kan registrera domäner under dessa TLD:er så kan tjänsten domai.nr hjälpa dig:

Annars så finns det även korta domäner på andrahandsmarknaden: n.nu såldes nyligen för 325€

2. Webbserver

Jag gillar verkligen Apache men den slukar för mycket minne allt för ofta och då finns det lite andra bra alternativ:

Planet PHP hade nyligen en artikel om hur du får Nginx att fungera med FastCGI och PHP. Kom även ihåg att göra så att 404 (ej hittas) fel går till din funktion som gör uppslagningar any2dec() (se nedan).

3. Databas

Att ha något slags databasbackend är ju att föredra och till en början så kan det vara bra att hålla det enkelt, jag började med att bara logga undan URL’er och ett löpnummer (auto_increment). Detta för att förhindra dubletter

4. Koden

Den grundläggande principen är enligt följande:

  1. Någon vill förkorta en URL, du kontrollerar om den redan finns och finns den inte så:
  2. Skapa en kort URL, url:en baseras på det löpnummer som MySQL INSERT auto_increment returnerar och funktionen dec2any() som hittas här.

För att förhindra att långsamma databasuppslagningar som söker efter dubletter vid INSERT så kan Sphinx användas för att generera ett index varje natt och sedan gör du slagningar mot Sphinx samt MySQL (dagens URL:er).

Jag använder även memcached när jag kollar efter dubletter samt vid ompekningen (HTTP 301 Moved Permanently).

5. Spam

Du bör även lägga in spärrar för att föhindra  spam och då kan bl.a SURBL vara till hjälp: http://www.surbl.org/ eller detta pear-paket: http://pear.php.net/package/Net_DNSBL/

2 reaktioner på ”Skapa din egen URL-förkortare

  1. Återigen intressant att läsa konkreta implementations-tips! Men kan man inte bara sätta ett unikt index på kolumnen med URL:erna, eller blir sökningen ändå långsam?

    Tack också för länken till Domai.nr, det var en bra sida! Jag har redan hittat två domäner med exotiska toppdomäner för ett projekt.

    (Länkarna till GD- och LY-toppdomänerna ovan är felaktiga, de går till domain.nr istället för domai.nr…)

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *