教大家如何设计实现自己的PHP短网址服务
2013-10-15 11:33
711 查看
PHP短网址服务设计分三个过程,搞明白了就可以自己设计实现它。
1.根据原始网址生成短网址
这个有现成的算法可以用,该算法的原则:同一个网址生成的短网址应相同,而不是随机
生成。
PHP版的短网址生成函数:
用的时候调用函数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 。
本文出自 “清源教育” 博客,转载请注明此处,谢谢!更多php技术问题欢迎加群探讨:256271784,验证码:csl,不写验证不予通过哟~
1.根据原始网址生成短网址
这个有现成的算法可以用,该算法的原则:同一个网址生成的短网址应相同,而不是随机
生成。
PHP版的短网址生成函数:
function code62($x) { $show = ''; while($x > 0) { $s = $x % 62; if ($s > 35) { $s = chr($s+61); } elseif ($s > 9 && $s <=35) { $s = chr($s + 55); } $show .= $s; $x = floor($x/62); } return $show; } function shorturl($url) { $url = crc32($url); $result = sprintf("%u", $url); return code62($result); }
用的时候调用函数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 。
本文出自 “清源教育” 博客,转载请注明此处,谢谢!更多php技术问题欢迎加群探讨:256271784,验证码:csl,不写验证不予通过哟~
相关文章推荐
- 网页设计中如何实现圆形头像?(自己基本信息里一般有点)
- 如何设计实现一个地址反解析服务?
- php 网站添加视频,如何实现这种效果,自己开发,还是找视频插件商买
- 如何设计实现真正的响应式微服务系统?
- SilverLight企业应用框架设计【四】实体层设计+为客户端动态生成服务代理(自己实现RiaService)
- 如何创建自己的短网址服务
- 系统原型结构描述(概述)最近要设计一个框架,大家一起讨论下如何实现?
- 如何使用Spring Cloud实现高并发微服务设计 - PaaS云
- 如何让大家都能看到自己设计的网页
- 群上出的一个算法题,上我的解,大家可以用自己会的语言实现一下哦,我用的php
- 如何自己实现php访问mysql的连贯操作
- 如何实现一个优质的微服务框架:Apache ServiceComb 的开放性设计
- 如何设计实现真正的响应式微服务系统?
- 微信公众号开发Apache+php如何搭建服务
- 如何自己动手实现 KVO
- 教教大家如何使用php程序开发一个自动识别移动设备
- 如何在给甲方拷贝设计成果时更好保护自己利益
- 如何自己构建一个小型的Zoomeye----从技术细节探讨到实现
- 如何让自己写的服务器支持php?
- 算法与数据结构题目的 PHP 实现:栈和队列 设计一个有 getMin 功能的栈