打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
php session阻塞页面分析及优化 (session

转: http://www.tuicool.com/articles/bqeeey

首先看下下面代码, session1.php 文件

<?phpini_set('session.save_path', './tmp/');function open($save_path, $session_name) {    echo __FUNCTION__,"<br/>";    return (true);}function close(){    echo __FUNCTION__,"<br/>";    return (true);}function read($id){    echo __FUNCTION__,"<br/>";}function write($id, $sess_data){        echo __FUNCTION__,"<br/>";    return (true);}function destroy($id){    echo __FUNCTION__,"<br />";      return(true);}function gc($maxlifetime){    echo __FUNCTION__,"<br />";     return true;    }session_set_save_handler("open", "close", "read", "write", "destroy", "gc");register_shutdown_function('test');function test(){  echo __FUNCTION__,"<br />";}session_start();echo 'aaaaa',"<br />";/*结论->session_start开启后, 会自动执行open,read函数。等页面执行完后,会执行shutdown函数.最后后会把session写入进去,然后执行close关闭文件从session_start 到页面结束,会一直锁定文件或者保持连接的。*/

然后通过1个实例子来理解 , 先执行 session2.php 代码, 20秒内执行 session3.php 

session2.php 文件

<?php//执行 session2.php和session3.php, /*因为 session2.php 脚本一直没有结束,结束后 session才会执行写入和关闭操作 (看session1.php 结论), session一直被锁定了因此执行session3.php 时会发现 一直处于阻塞状态。  *//*session_start();$_SESSION['uname'] = 'lily';sleep(20);*///如果用以下代码 就没问题了, 立即提交 写入关闭session_start();$_SESSION['uname'] = 'lemon';session_commit();sleep(20);

session3.php 文件

<?phpsession_start();echo $_SESSION['uname'];

总结:

//可以用 session_commit (别名 session_write_close) 立即执行写入关闭 /*session_start();$_SESSION['aaaa'] = 1000;session_commit();  //执行commit后,直接会调用,wirte,close操作*//*1.只读取session页面,建议打开后,就直接commit,这是$_SESSION变量已经生成了。2.有对session进行写入页面,建议修改完$_SESSION后,直接调用commit3.多次打开并且写入,这个不建议使用,比较打开文件,写入都是耗费时间的。如果能一次搞定的,就不要做多次了。 除非,中间执行很耗时的业务。后记:其实,使用完session,随手commit也不是坏事,养成习惯后。可以节省性能,减少服务器开销。是个不错选择!欢迎大家交流!*/
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
PHP用mysql数据库存储session
【原】PHP从入门到精通2小时【图文并茂】
一个简单的猜单词的小游戏
防止恶意刷新,重复提交表单
PHP+MySQL会员系统功能
在PHP中在不同页面之间传递数据
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服