建议封装一下session的操作类,并集成到SP里

#1 coolhpy

因为本人在项目中有碰到过session的读写锁问题
测试代码:
session_start();
$_SESSION["count"]=0;
session_write_close();
sleep(10);
echo "success";
?>
如果不加 session_write_close(); 就会出现:第一个请求执行10秒,第二个执行20秒,……的情况


虽然这个问题在一般的网站中不太会出现,但是由于框架中也有涉及session的操作,一旦项目遇到这个问题,对于一些就框架核心代码不熟悉的人来说,其开发成本就会增加。而“扩展代码库”里也已经有现成的session类,集成一下应该不会很麻烦。
所以希望jake可以考虑下,从根源上解决这个问题,也能增加SP的兼容性~
{:soso_e113:}


PS. 论坛的访问速度似乎比以前慢了很多啊

2014-11-25 10:58:14

#2 jake

{:soso_e181:} 研究研究

讨论一下,如果把session_start+session_commit一起封装起来,那么每次读写session都会打开关闭文件,楼上这种情况毕竟小概率事件,如何平衡呢?

2014-11-25 12:12:10

#3 jake

情况是有这样的可能,不过封装不封装是要看是否常见。

和群里的兄弟聊了一下,楼上说的情况,很少见。我个人是没遇过了。

在很极端和凑巧的情况下才会出现这样的问题,而且有意识地加上commit也是可以避免的。

但是如果是封装起来start和commit,那么每次读写session都需要一次IO。在假设是“很极端和凑巧的情况下”,文件IO会更容易出现瓶颈,而不是session。

所以,这样的情况还是不封装为好,换句话说,php本身也知道非常少概率下出现此问题,但是没做太多的笔墨在上面,所以我们也不需要太在意。http://php.net/manual/zh/function.session-write-close.php
PS:本帖非常好,楼主很给力!!!给了我们一个很值得思考的问题,谢谢!!!

这里我在考虑的是session存到memcached之后链接数过多的情况了。

论坛最近所在的服务器不知道搞什么了,所以估计会慢点。

帖子转移到意见反馈区,谢谢支持。

2014-11-25 15:39:48

#4 coolhpy

哈,没想到jake回复了这么多。。
主要是和本人的需求有关系吧,需要定时去国外网站抓取一些数据,访问速度慢自然就引发了这样的问题。
这确实是个小概率事件,不过我是觉得可以封装一个session操作类,默认不开启读写后自动保存到文件的功能,只要在有需求的时候,通过spConfig来开启即可,以备不时之需嘛。

另,不知道jake对于如何提高国外站的访问速度这方面有没有什么信息可以交流一下?让我也学习学习,嘿嘿~

2014-12-11 10:55:28

#5 jake

coolhpy 发表于 2014-12-11 10:55
哈,没想到jake回复了这么多。。
主要是和本人的需求有关系吧,需要定时去国外网站抓取一些数据,访问速度 ...
可以封装成session类放到论坛扩展版上面,好像之前就有个这样的扩展吧。

PS:国外网站没经验哦{:soso_e113:}

2014-12-11 11:10:03

#6 shinid8210

我无能为力咯!

2015-03-30 11:07:43