博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
session 锁定导致并发阻塞
阅读量:6221 次
发布时间:2019-06-21

本文共 591 字,大约阅读时间需要 1 分钟。

hot3.png

最近在使用到ajax进行异步获取数据时,一个页面中存在2个ajax异步执行

根据观察,第一个ajax请求发起成功,这个请求得php运算100秒后才返回结果

第二个ajax在第一个请求发起后也跟随发起请求,第二个请求php运算10秒就可以发回结果,
但是结果却是得第一个请求完全执行完成返回结果后第二个才跟随返回。

原因在于执行session_start()后 对应的session文件是被锁定的,直到当前脚本结束才会解锁。
在锁定期间,另一个进程访问相同session id 要等文件解锁后session_start()才会开始。
解决办法是在 session 设置好数据后调用 session_write_close() 将数据写入文件并且结束session

例如如下代码

PHP code
<?php
session_start();
$_SESSION["count"]=1;
session_write_close();
sleep(10);
?>
如果不加入session_write_close();
并发3个进程访问该页面,第一个进程执行10秒 第二个执行20秒 第三个执行30秒。
加入session_write_close()后 
并发3个进程会同时在10秒后执行完成

转载于:https://my.oschina.net/u/1172935/blog/148622

你可能感兴趣的文章
HTTP常用状态码
查看>>
剑指offer 题目4
查看>>
重学前端(9)正则还真要多练
查看>>
MongoDB的复制源oplog
查看>>
五线谱入门(三)
查看>>
原创文章:使用Vuejs实现个人所得税功能兼容移动端
查看>>
HashiCorp:为任何应用程序提供安全和可运行的基础架构
查看>>
面试中经常被问到的 Redis 持久化与恢复
查看>>
好程序员大数据技术分享Zookeeper集群管理与选举
查看>>
Dell-Windows10下装Ubuntu 16.04 双系统,Ubuntu引导开启-经验贴,满干货!
查看>>
说说主流的推送服务
查看>>
加密狗只是开始,区块链+文娱才是大趋势
查看>>
一个vue-cli创建项目webpack相关都配置合简介
查看>>
Zookeeper源码分析-Zookeeper Server启动分析
查看>>
ES6 学习笔记 - 字符串
查看>>
支付宝SDK下载地址
查看>>
iOS 动画七:Layer Animations
查看>>
[译]如何通过7个简单步骤保护您的Linux服务器
查看>>
建站过程实录
查看>>
markdown-掘金编辑器语法2018
查看>>