OSSEZ

 找回密码
 新用户

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2741|回复: 0

[语言基础] 设计实现自己的PHP短网址服务

[复制链接]
 楼主| 发表于 2014-9-4 04:19:01 | 显示全部楼层 |阅读模式
PHP短网址服务设计分三个过程,搞明白了就可以自己设计实现它。

1.根据原始网址生成短网址

这个有现成的算法可以用,该算法的原则:同一个网址生成的短网址应相同,而不是随机生成。

PHP版的短网址生成函数:
  1. function code62($x) {
  2.   $show = '';
  3.   while($x > 0) {
  4.   $s = $x % 62;
  5.   if ($s > 35) {
  6.   $s = chr($s+61);
  7.   } elseif ($s > 9 && $s <=35) {
  8.   $s = chr($s + 55);
  9.   }
  10.   $show .= $s;
  11.   $x = floor($x/62);
  12.   }
  13.   return $show;
  14.   }
  15.   function shorturl($url) {
  16.   $url = crc32($url);
  17.   $result = sprintf("%u", $url);
  18.   return code62($result);
  19.   }
复制代码
用的时候调用函数shorturl即可返回一个长度为6的由字母和数字组成的字符串。

函数code62中62的含义是:长度为6的字符串的每一位都有62个可能性,即26个英文字

母大小写加10个数字,所以可服务的网址数为62的6次方。

2.存储短网址及原始网址

这个需要用到数据库,理想的是key-value型的,如MongoDB,SAE的KV-DB等。当然SQL数据库也是可以的,存储时要注意短网址和原网址的一一对应关系。

3.当用户短网址时获取其原始网址并跳转

这一步只需根据请求查询数据库并得到原始网址,接下来只需用header跳转下就好了。

由于短网址的格式为: http://t.a.com/vB4cFp ,所以要用到Url重写,Apache的话在.htacess中配置,nginx的话不同的操作系统的配置文件位置不同,SAE的话是config.yaml 。
您需要登录后才可以回帖 登录 | 新用户

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|小黑屋|Archiver|帮助|OSSEZ (North Tecom)  

GMT+8, 2017-5-27 23:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表