php二维码生成与验证码生成类似,就是用户访问某个页面,就会在某个页面即时生成。有人就会说直接生成一个二维码,然后把它的路径存入库里面不就行了。但现在有个问题,我们当初就是把二维码路径存入数据库,到做集群的时候该怎么办,那么这样问题就来了,在A服务器内,我们生成的二维码地址在public目录下,用户访问的是B服务器,而B服务器public目录下面就没有了该路径(因为没有生成二维码),所以现在问题就很清晰明了了,跟session一样,但是session可以存入memcache或者redis,二维码路径也这样吗。我们的做法是,二维码既然也是用GD库生成的,所以就直接在访问的时候再生成,然后传路径给前端展示。
总结:二维码生成,存路径到数据库里面没问题,到集群的时候会有问题,有的用户会访问不到,所以有三种办法
1.将二维码放到缓存里面(有一定风险)
2.将二维码看作是验证码(反正都是GD库),随时生成就是了,也方便把路径直接发送给前端(比较保守)
3.将二维码放到OSS服务器,每次访问都访问OSS服务器,这样的话即使再做集群也没关系(反正统一放到了一个服务器)
下面说一下怎么生成二维码(大部分是复制的,网上都有,本片博客只是说一下上面的思路):
HP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址:
http://phpqrcode.sourceforge.net/
下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2。
phpqrcode.php提