分享一下经验,容易被忽视的session_commit
时间:2011-09-15
来源:互联网
这段时间一直在用PHP做报表,碰到了一些非常头痛的问题,就是有些报表的SQL跑的时间比较长,而当这个报表正没有结束运行的时候,其它的报表页面就绝对被卡住
经过一步步分析,终于找到了病症之处:session
session最常用的就是记录用户的登陆信息,而在不少资料中,会告诉你,session_start()后,无需自己去调用session_commit(),脚本在结束后自动调用session_commit()
如果你的脚本运行的时间很短,自然不会出什么问题,但如果是需要比较长的运行时间的话,就杯具了。。。。
看看下面这两个简单的脚本吧,拿去运行一次,你就知道什么结果了
test.phpPHP code
test2.phpPHP code
先运行test.php,然后20秒之内运行test2.php。按道理,test2.php会一下子就闪出来,但因为test.php还在抓住session不放,于是test2.php就被session_start()卡住了,直到test.php结束后,test2.php才得以继续。
而如果把代码中注释掉的那两行加上的话,才会得到我们所期望的效果。
我被这个小问题困扰了好一阵子,在这里分享一下经验给各位新手们:记住及时的session_commit(),别听那些只会copy的人在那说不用手动调用session_commit(),否则吃苦的就是你
经过一步步分析,终于找到了病症之处:session
session最常用的就是记录用户的登陆信息,而在不少资料中,会告诉你,session_start()后,无需自己去调用session_commit(),脚本在结束后自动调用session_commit()
如果你的脚本运行的时间很短,自然不会出什么问题,但如果是需要比较长的运行时间的话,就杯具了。。。。
看看下面这两个简单的脚本吧,拿去运行一次,你就知道什么结果了
test.phpPHP code
<html> <head> <title></title> </head> <body> <?php session_start(); $_SESSION["message"]="我留下的脚印"; // session_commit(); sleep(20); ?> 休息了20秒钟... </body> </html>
test2.phpPHP code
<html> <head> <title></title> </head> <body> <?php session_start(); //session_commit(); //别担心,session_commit()以后,$_SESSION数组的内容还在. echo $_SESSION["message"]."<br/>"; ?> 我等到花儿也谢了 </body> </html>
先运行test.php,然后20秒之内运行test2.php。按道理,test2.php会一下子就闪出来,但因为test.php还在抓住session不放,于是test2.php就被session_start()卡住了,直到test.php结束后,test2.php才得以继续。
而如果把代码中注释掉的那两行加上的话,才会得到我们所期望的效果。
我被这个小问题困扰了好一阵子,在这里分享一下经验给各位新手们:记住及时的session_commit(),别听那些只会copy的人在那说不用手动调用session_commit(),否则吃苦的就是你
作者: sharp_ice 发布时间: 2011-09-15
该回复于2011-09-15 13:18:54被管理员删除
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
|
#2楼 得分:0回复于:2011-09-15 13:11:06
|
作者: wanwan010 发布时间: 2011-09-15
谢谢 呵呵
作者: craboy1 发布时间: 2011-09-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28