免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6037 | 回复: 11
打印 上一主题 下一主题

有关session序列化的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-25 20:52 |只看该作者 |倒序浏览
经我的测试发现,每当php脚本执行完毕,$_SESSION数组里的值就会被序列化到数据库/文件,而不管脚本是否修改了$_SESSION数组。有没有什么办法可以做到:如果脚本没有修改$_SESSION数组,脚本执行完成后不进行序列化。
PS:用自定义的session_handler是可以的,我已实践过,但我想知道有没有简单的配置可以做到这一点(为了效率,毕竟handle里的判断处理也是需要资源的)。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:55:28
2 [报告]
发表于 2011-11-25 21:11 |只看该作者
居然有这种需求?
可以把php session部分的源代码改了。

论坛徽章:
0
3 [报告]
发表于 2011-11-26 23:03 |只看该作者
没有简单的方法。

论坛徽章:
0
4 [报告]
发表于 2011-11-26 23:59 |只看该作者
session_handler 得到的数据也是序列化过的,你可以先反序列化,哈哈

就如同他们说的,这个是php源码决定的,你可以修改下session那部分,再编译下就ok

论坛徽章:
0
5 [报告]
发表于 2011-11-28 09:09 |只看该作者
我没说清楚,我在handler里是抑制了写文件/写数据库的操作,序列化没有抑制。。。之所以有这样的需求,是因为php的session机制会产生许多无谓的IO操作,文件的话还好一点,session数据库的话负担就有些大了。。当然数据库与前台之间可以插入缓存嗯。。。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:55:28
6 [报告]
发表于 2011-11-28 10:25 |只看该作者
回复 5# terry8416


    节省io和序列化也没有关系啊。
     要是瓶颈在session写数据库,就把session存缓存里,memcache,redis,tt都可以。

论坛徽章:
0
7 [报告]
发表于 2011-11-28 13:17 |只看该作者
对,正是采用了memcache,但是作为中间层,数据库还是需要的,因为我们系统要求session保存时间比较长,不能老是占用内存资源。。。

论坛徽章:
0
8 [报告]
发表于 2011-11-28 16:53 |只看该作者
LZ很细心,session的无条件更新确实有点蛋疼,session_set_save_handler  是解决之道,
不会有效率问题,放心吧。

论坛徽章:
0
9 [报告]
发表于 2011-11-28 22:13 |只看该作者
本帖最后由 terry8416 于 2011-11-29 09:21 编辑

谢谢各位的解答,我还有一个小问题。。有两台服务器,观察了session的内容,发现一台是人类可读的编码,类似这样:__HTTP_Session_Info|i:2;__HTTP_Session_Expire_TS|N;(PHP 5.2.6)
而另一台则是加密串:sYZDAvqsMRTLAlSo3xxxxxxxxxx(PHP 5.3.3-7)
不知道是什么配置导致两台服务器存储session数据的格式不同。。。

论坛徽章:
0
10 [报告]
发表于 2011-11-29 11:28 |只看该作者
发现了,一台服务器上装了suhosin,在写session之前把session数据加密了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP