PHP-像赶集网一样的电话号码图片生成方式是什么样?

PHP-像赶集网一样的电话号码图片生成方式是什么样?

晚风撩人 发布于 2017-03-23 字数 365 浏览 1013 回复 4

例如像赶集网一样,用户在发布信息时,网站会将用户填的电话号码生成图片的形式展示,那么现在有一个问题,这个图片是什么时候生成图片的,我想的有两种方式,一种是用户提交后即时生成图片,然后生成静态图片文件,但是这样电话号码图片很多(虽然文件很小),还有一种方式是实时生成,这样会加大服务器的负载,请大家说说这两种方式各有什么样的优缺点?或者还有什么其它更好的方式吗?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

偏爱自由 2017-10-24 4 楼

你可以使用工具看一下赶集网的图片地址
就像下边这一个,地址是
http://qd.ganji.com/tel/573b0161516f5b3e51370866013a503a0c6a09370f35.png
这是为电话号码生成一个唯一的存储值,然后存放到用户的字段中
至于生成
1.可以在这个用户发布的信息界面, 首次访问的时候生成,每次根据用户id和电话号码和散列函数来生成图片文件名,然后监测是否存在这个图片, 这样每次都会运算散列函数
2.或者是首次访问的时候检测数据库是否为空, 然后生成图片并且存入数据库字段
3.在一个就是再添加电话号码和修改电话号码的时候生成图片, 这个我觉得是逻辑上比较靠谱的一个.

清晨说ぺ晚安 2017-09-23 3 楼

赶集网如何做的这个真不知道,平时关注也比较少,通过图片的名称猜想可能是浏览时生成的图片,但请求的完整地址像是请求的静态文件,可能是做了rewrite,通过号码加密后生成图片名称,然后通过请求的图片名称在程序中解密得到号码,然后再根据号码生成图片,最后输出到浏览器。我的猜想主要原因之一是:图片很多的情况下不可能不分目录来存储即使图片很小。当然这只是猜想。

针对这个问题我觉得请求图片时再生成比较好,原因大概有几点:

1)不会有物理文件存在,节省空间。
2)存储在磁盘上,如果文件很多,读取图片会变慢,需要按照某种规则来分目录存储(如:日期、文件数、容量)
3)对图片存储和读取没有磁盘I/O开销,可提高磁盘吞吐量
4)降低维护成本,不存在备份等问题
5)如果有权限等验证,控制起来比较简单、方便、灵活
6)如果一张图片有多种尺寸的缩略图,可以根据请求的图片名称,轻易制作任意大小的图片,同样不会存在多个物理文件
7)针对网站UI的变更使图片显示尺寸改变,只需要修改生成图片的程序即可,不需要考虑历史图片。
8)数据的更新或者删除,不需要对图片进行重新生成或者删除等操作,同样也不用考虑图片重复问题

这种方式不适合处理大图片,如果程序需要读取原始图片来进行再次生成的话,这种方式也要慎用,需要针对实际问题来选择。
关于性能,就是程序处理图片上,可能导致图片显示慢的问题,如果并发大的话,加大服务器的负载是必然的,服务器处理静态资源的请求效率还是比较高的.

其他方式可以用人们经常提起的 mongodb grid来存取图片

以上都是个人总结,说的不对的地方,欢迎在评论中指出,讨论。

瑾兮 2017-08-06 2 楼

仁兄可以将电话转为base64编码,页面上直接读取就行了:
例如:<img src=“data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWH……”/>
php端将电话号码编码,页面直接输出。
我只提供一个思路,我没有试验过是否可行,楼主可以试试。反正页面直接输入base64编码的图片是没有问题的。

浮生未歇 2017-04-08 1 楼

就类似验证码图片一样啊!你把随机数设置成你需要的文字就可以啦!背景等等都可以按照验证码图片一样去设置!
具体的代码网上一大堆,我就不粘贴出来了!