前段时间小博主在公司工作的时候发现有个项目经常会用到短网址服务,收集了下资料,写了下开发流程就开始弄了,然后就在公司的服务器上搭建了一个简单的短网址服务,用到现在基本也没出什么问题,具体的开发和搭建流程如下:
- Linux服务器(Centos系统)
- PHP运行环境(Nginx环境)
- Mysql数据库
- 把长链接转换成短链接的功能模块
- 把短链接还原成长链接的功能模块
- 统计记录短网址转换长网址的日志
- 线上部署
文件结构主要有三个:
a、build.php (生成短链接功能并且存储到数据库里);
b、db.php (数据库连接配置)
c、index.php (短链接还原长链接的接口);
这里的核心代码主要是通过接受用户输入的长链接的值,然后再通过简单的判断是否存在,如果存在该长链接记录则直接返回已经生成的那个短链接。如果不存在转换记录,通过简单的算法生成不重复的6位字符串来标识该长链接,再把标志码传到数据库记录转换记录。
该模块主要是通过对接收用户传过来的短网址后面的6位标志码来去查找数据库里面存在的长链接记录,同时记录用户的访问日志等。
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?url=$1 last; break;
}
}
这里的意思主要是指默认把链接:(http://s.jianghuasheng.cn/Gjhg4o)转换为(http://s.jianghuasheng.cn/index.php?url=Gjhg4o)。
当然,配置成类似(http://jianghuasheng.cn/s/Gjhg4o)的方法也是大概一直的,这里不一一介绍了。
实现这个功能并不是很难,但是有几点还是要注意下的:保证每次生成的标志码都是不一样的!这里通过网上找到的一个算法,通过对用户传过来的连接进行处理,得到不同的标志码。长链接不同,标志码生成就不一样了。同时,为了该功能模块的使用简便性,直接架构成接口的模式,直接直接调用接口就可以实现功能。