session_start超时、session锁阻塞请求的解决方法

session_start超时、session锁阻塞请求的解决方法hp默认的会话处理器是以文件形式存储在服务器端的,为保证session文件中数据的安全,每次只能有一个请求去操作session文件,这个时候session文件就会被加上锁,只能等到脚本执行结束或者session正常关闭才会解锁。

大家好,欢迎来到IT知识分享网。session_start超时、session锁阻塞请求的解决方法

最近公司的网站在访问量大起来后,网站的响应时间经常性的变得很长,页面加载缓慢,经过php-fpm的慢查询日志分析,是session_start()这个函数导致的超时。

网站当中因为许多页面使用ajax发送了多个请求获取数据,并且这些请求大多数还需要操作session。php默认的会话处理器是以文件形式存储在服务器端的(我们的网站也是采用这种方式),为保证session文件中数据的安全,每次只能有一个请求去操作session文件,这个时候session文件就会被加上锁,只能等到脚本执行结束或者session正常关闭才会解锁。
session文件锁定期间,后进来的请求,只能处于等待状态,前面的请求执行结束,后面的请求才能去操作session文件。这就好比厕所里的坑位,先到先得,后面进来的人只能干等着,再着急也没用。

一方面是session锁造成的阻塞,另一方面上在访问量较大的情况下,服务器资源争竞很厉害,相比平时响应时间会有所增加。这么一来,想快都快不起来。

既然是持锁太久造成的阻塞,那就在操作完session后,及时释放文件锁就行了,使用 session_write_close() 函数保存会话数据并释放文件锁。这样问题就解决了。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22502.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信