成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

網(wǎng)址縮短的PHP程序代碼

2010-12-03 09:53:17來源:作者:

近來微博很火,因?yàn)樽謹(jǐn)?shù)的限制,出現(xiàn)了很多網(wǎng)址縮短這種服務(wù),比如sina自己用了自家的sinaurl.cn、騰訊微博的url.cn,想到自己曾經(jīng)也注冊了一個(gè)很短的域名k6.hk很久了,一直閑著,不知道干嘛用,突然想到可以用來做

近來微博很火,因?yàn)樽謹(jǐn)?shù)的限制,出現(xiàn)了很多網(wǎng)址縮短這種服務(wù),比如sina自己用了自家的sinaurl.cn、騰訊微博的url.cn,想到自己曾經(jīng)也注冊了一個(gè)很短的域名k6.hk很久了,一直閑著,不知道干嘛用,突然想到可以用來做網(wǎng)址縮短,還不錯(cuò)。說干就干,一會(huì)就寫好了。比如我的博客地址就可以縮短成:http://k6.hk/u

程序的設(shè)計(jì)很簡單,下面說下原理,

數(shù)據(jù)庫只有兩個(gè)字段seq(自增長數(shù)字)和url(數(shù)字的url地址,建立索引)。

用戶輸入一個(gè)url地址,查詢表是否包含此url,如果存在,則返回seq的數(shù)字,

如果不存在,則插入數(shù)據(jù)庫,得到一個(gè)新增加的自增seq數(shù)字,為了縮短數(shù)字占用的字符數(shù),我們可以把a(bǔ)bc等字母的大小寫用上。這樣10個(gè)數(shù)字,26個(gè)小寫字母,26個(gè)大小字母就組成了一個(gè)62進(jìn)制了。比如數(shù)字10000000000(100億)轉(zhuǎn)換后就是aUKYOA,只有6位了,這樣就能縮短很多的網(wǎng)址了。

下面是php的進(jìn)制轉(zhuǎn)換代碼,來源于php手冊(簡單吧),當(dāng)然其他語言實(shí)現(xiàn)也是很簡單的!

<?php
//十進(jìn)制轉(zhuǎn)到其他制
function dec2any($num, $base=62, $index=false)
{
  if (!$base)
  {
    $base = strlen($index);
  }
  elseif(!$index)
  {
    $index = substr("0123456789abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, $base );
  }
  $out = "";
  for ($t = floor(log10($num) / log10($base )); $t >= 0; $t-- )
  {
    $a = floor( $num / pow( $base, $t ) );
    $out = $out . substr( $index, $a, 1 );
    $num = $num - ( $a * pow( $base, $t ) );
  }
  return $out;
}

function any2dec($num, $base=62, $index=false)
{
  if (!$base)
  {
    $base = strlen( $index );
  }
  elseif(!$index)
  {
    $index = substr("0123456789abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, $base);
  }
  $out = 0;
  $len = strlen($num) - 1;
  for ($t = 0; $t <= $len; $t++)
  {
    $out = $out + strpos($index, substr($num, $t, 1 )) * pow($base, $len - $t);
  }
  return $out;
}
?>

得到縮短的網(wǎng)址以后,怎樣實(shí)現(xiàn)網(wǎng)址的轉(zhuǎn)發(fā)呢?可以利用 ttserver,將縮短網(wǎng)縮字串當(dāng)作key,真實(shí)的 url 地址當(dāng)作 value,存入ttserver中。ttserver本身就提供 http 訪問,只需要稍加修改就可以直接利用 ttserver 進(jìn)行縮短網(wǎng)址的轉(zhuǎn)發(fā):通過ttserver的http接口直接跳轉(zhuǎn),那么性能將會(huì)非常高,一臺(tái)機(jī)器一天提供上10億次的中專都不是問題。用兩臺(tái)機(jī)器就可以實(shí)現(xiàn)高可用了,這種服務(wù)都不怎么耗費(fèi)流量的。
 

關(guān)鍵詞:php網(wǎng)址縮短

贊助商鏈接:

主站蜘蛛池模板: 阳朔县| 抚顺县| 红桥区| 竹山县| 将乐县| 贵港市| 毕节市| 平阳县| 彩票| 汪清县| 福安市| 健康| 新建县| 新平| 玉树县| 江西省| 龙陵县| 阜平县| 界首市| 深圳市| 丰顺县| 灯塔市| 隆林| 克什克腾旗| 柏乡县| 中宁县| 夏邑县| 繁昌县| 报价| 驻马店市| 景德镇市| 神池县| 舞阳县| 和林格尔县| 花莲县| 香港 | 洞口县| 柳江县| 房山区| 湖口县| 屯留县|