有关session阻塞问题

来源:互联网 发布:kettle java脚本 编辑:程序博客网 时间:2024/05/18 15:23
   最近遇到一个问题,有关session阻塞的问题。是PHP请求API接口,接口反应时间慢,导致其他页面必须等待接口返回后才能执行,查来查去最终找到了是session问题。
当然这种问题只有在同一个浏览器下才会发生。
网上查找资料得知,由于PHP的Session信息是写入文件的,1个客户端占有1个session文件。因此,当 session_start被调用的时候,该文件是被锁住的,而且是以读写模式锁住的(因为程序中可能要修改session的值),这样,第2次调用 session_start的时候就被阻塞了。
查了PHP的手册,发现一个session_write_close函数,作用是Write session data and end session,也就是写session的数据,同时关闭这个session。
因此,我们可以在用完session之后,调用这个函数关闭session 文件即可解除锁定。
一般,session是用来记录用户身份信息的,以便PHP进行身份认证,因此完全可以将session的读写放在页面刚开始执行的时 候,在执行完以后,马上调用session_write_close函数即可。

在thinkphp框架中session方法中就已经设计好了
session('[start]');
session('[pause]');
session('[destroy]');
session('[regenerate]');
具体方法信息可以查看框架中的方法。

0 0
原创粉丝点击