Coding用户
PHP终极粉丝
pychina.org志愿者
喜欢学习新技术
微博:海诺者
“勇者无所畏惧”
当前社会的wb化平台愈来愈多,多样化越来越严重,然后这根本无法阻止手机市场的发展,在如火如荼的硬件市场上是手机端软件应用在烘托着他们的天空。以上为废话,看过笑笑就行了。
引子说到手机应用就要面临着一个问题,原生应用的性能好,但是html5应用已经占据了很大的份额,在当前的开发中,我们很少使用sockt来连接服务器,大多数都是ajax跨域请求。但是由于html5打包的应用,连接存活率十分低效,主要原因在与html5打包的app各个窗口间的cooki等信息不能共享,写入失败等情况导致服务端的很多wb信息共享方法都失败了。那么我们该怎么办呢?
准备让我们来温习下浏览器的存储类型WbSQL、IndxdDB、WbStorag以及ApplicationCach当然还包括cookis然而cookis废掉了所以这里我们就不用它了。扩展阅读:四种有能力取代Cookis的客户端Wb存储方案知道了这些存储方式怎么来选择,我就不讲了,这里选用localstorag(即上面说的wbstorag)的原因两个:
.能存储5M内的数据2.能够长久存储
然后,大家要看wbstorag存储了解如何使用localstorag。
准备2客户端的存储解决了那么我们就要来看看PHP了。由于我主要使用PHP所以就以PHP为例子了。PHP的服务端使用的是sssion来纪录会话信息的。PHP:Sssions包含了PHP所有的sssion信息,包括sssion的各个管理方法。你可能需要先简单了解下sssion的安全信息,我们需要用到的有哪些?我们需要人工控制sssion的话怎么做?
.扩展阅读类ThSssionHandlrclass2.扩展阅读类ThSssionHandlrIntrfacclass3.sssion_st_sav_handlr此方法是ThinkPHP使用的sssion管理操作绑定方法。这也是大多数自定义sssion的使用方法。扩展阅读:自定义会话管理4.ThinkPHP框架已经写好的sssiondb管理方法mysqli.class.PHP
首先ThinkPHP框架封装了下sssion的管理操作见functions.PHP中的sssion方法(点击只看sssion方法):下面这段代码的核心就
它定义了用哪个方法来关联sssion生成/销毁/写入/读出。
我们在sssion函数可以看到这样一对方法sssion_ncod和sssion_dcod这两个方法一个是加密sssion会话信息,一个解密sssion会话信息,方便我们直接操作sssion时使用。
通讯了解了以上客户端和服务端的核心内容,还需要了解一下通用的wb访问时sssion管理,通常wb访问是在浏览器端写一个cooki默认的cooki名称叫做PHPSESSID然后每次请求都会以cooki方式发送到服务端,这样就保证了sssion会话信息的同步。
开发调试明白了原理那么我们就来做一个tokn好了,这个tokn的值设置为sssion的id值即可,然后通过手工处理sssion信息进行覆盖式保证sssion信息的同步。
具体的方法我在博客中的ThinkPHP中如何处理sssion信息中有了简单的说明。本文其实也是对他的详细说明。核心的代码就是那个sssion_dcod和sssion_id($id)
需要说明有以下几点:.将sssion信息保存在数据库中减少了io读写拥堵2.可以通过sssionid快速定位到数据记录3.可以通过设置sssion过期时间保证数据库中sssion能够得到长效保存4.重定义sssionid后其实只是将现有的sssion会话改了个名字,你必须将原有的sssion信息回复回去5.客户端需要讲接收到的tokn写入到localstorag,然后每次发送的时候都作为body发送给服务器6.服务端要在入口页面或者基础类的初始化程序中使用sssion处理7.服务端使用了这种方式不需要重新造轮子,不需要再写一套自己的信息管理方式,所有信息通过sssion共享,tokn也不用特意另行生成,使用默认的sssion_id即可
总结说白了,这个问题就是sssion共享。如何进行sssion共享,这里的方法是通过sssion的db扩展来讲sssion保存在数据库中,但是文件存储也是一样的。可以读取sssion信息可以通过sssionhandlr扩展SssionHandlr::rad(string$sssion_id)来读取。
道理都是相同的,我也是一个懒人,之所以使用ThinkPHP就是因为这一套是完善的一个东西,用起来比较方便,YII和CodIgnitr也是很方便扩展的,别的框架没用过不太清楚。欢迎大家留言回复至于大家自己写的框架更好扩展了,只需要那个sssion_st_sav_handlr这个方法定义下就可以了。soasy!本文主要是用于引导初学者掌握PHP中的sssion管理,面向的知识面比较窄,也比较精确,PHP的东西还是要打架多死记硬背,然后活学活用。以javapythongo等其他语言为后端的,其实也是着重在sssion管理上,可以参考,然后找一下本语言内的sssion方法。
点击阅读原文获得更多链接和更好的阅读体验。
宁夏治疗白癜风的医院皮肤病治疗最好的药