PHP session_start()很慢问题分析与解决办法

最近在做东西的时候发现一个问题

有一个接口挂了 ,然后进行测试访问地址的时候,浏览器就一直处于等待响应的状态

怎么访问都不行,只有重启web服务器才行。

如果不重启web服务器进行代码调试,总发现在session_start()的时候就不能进行下去了

问题原因后来终于明白了:

因为浏览器发送的请求还是在web服务器中建立了线程进行了请求的处理,由于session是在服务器端存储

而浏览器处于等待响应的状态就是表明了web服务器正在处理你的请求,但是由于响应超时时间很长,你也许进行了下一次的调试。

在上一个请求还未死亡之前,它一直占用着你的session资源,而session资源是不能共享的,你再次请求的就一直会在等待session资源的获取。

也就是说只有等你上一个请求结束的时候你才能正常获取session资源并且进入代码的解析

以前发现PHP页面调用session_start()方法时很慢,甚至会用上几十秒钟,现在终于发现原因。

解决办法

因为session使用文件,多个请求时会锁住Session文件,尽量在不用Session时尽早释放Session.
使用 session_write_close() 方法

例如

 代码如下 复制代码

session_start(); //starts the session
$_SESSION['user']="Me";
session_write_close();   // close write capability
echo $_SESSION['user']; // you can still access it

时间: 2024-08-01 05:48:26

PHP session_start()很慢问题分析与解决办法的相关文章

章鱼TV信号差很卡问题分析与解决办法

章鱼TV信号差很卡原因分析我相信各位想到得,就是自己的网络环境不好了,自己网络不好肯定是有其它的软件或人在使用网络或占用大网络了,我们给各位总结一下,如下所示. 章鱼TV信号差很卡怎么办 1:看看有没有其它占用网速的应用了,我们可以关闭它. 2:检查所处网络环境是否有其他设备使用同一个WIFI,如若有必须关闭其他设备,停止使用,直至直播结束. 3:检查视频播放源是否流畅播放,如果不流畅,请更换播放源,或播放线路. 4:如果尝试了多种方法依然卡顿,请重启电脑重新开始直播,如果依然卡顿,请停止直播.

笔记本电池充不了电的四种原因分析和解决办法

  笔记本电池充不了电的四种原因分析和解决办法.不少网友会问,笔记本电池充不进电的原因是什么?笔记本电池不充电怎么办?笔记本电池不充电的4种原因分别是电源适配器故障,电池故障,主板故障,电路故障.那么我们该如何解决笔记本电池不充电这个问题呢? 一:电源适配器故障 电源适配器有很多朋友称之为充电器,虽然不够准确,但也确实很形象.判断是不是由于电源引起的不充电也很简单,替换法就可以.这种故障在DELL笔记本维修中多见,DELL笔记本采用LBK(DELL架構),充电电路设计比较特别,适配器如果出现问题

导致MyEclipse内存不足的原因分析及解决办法_java

1.修改eclipse.ini 在Myeclipse安装目录下G:\MyEclipse8.5\Genuitec\MyEclipse 8.5有一个myeclipse.ini配置文件,设置如下: -vmargs -Xmx512m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=64m 2.设置Default VM Arguments 在myEclipse中,打开Windows-> Preferences->Java->Installed JREs

网站首页被百度K掉降权原因分析及解决办法

中介交易 SEO诊断 淘宝客 云主机 技术大厅 做seo的朋友都会遇到网站首页被百度K掉的时候,让人非常苦恼.因为平常对于企业网站优化来说,首页的关键词是整个网站主要关键词流量的来源.所以在做网站推广过程中遇到这样的问题都会让相关工作人员心急如焚.这里icp66网站建设工作室总结了一下网站首页被百度K掉或者是降权的原因以及处理方法. 网站首页被百度K掉降权原因分析及解决办法 网站首页过度优化:网站首页滥用优化标签,网站首页满篇的使用h标签或者着重和加强标签.导致百度搜索引擎认为是故意在seo优化

后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法_AngularJS

1.问题: 后端接收不到AngularJs中$http.post发送的数据,总是显示为null 示例代码: $http.post(/admin/KeyValue/GetListByPage, { pageindex: 1, pagesize: 8 }) .success(function(){ alert("Mr靖"); }); 代码没有错,但是在后台却接收不到数据,这是为什么呢? 用火狐监控:参数是JSON格式 用谷歌监控:传参方式是request payload 可以发现传参方式是

PHP中ID设置自增后不连续的原因分析及解决办法_php实例

PHP中ID设置自增后不连续的原因分析如下所述: alter table tablename drop column id; alter table tablename add id mediumint(8) not null primary key auto_increment first; 每次删除把这两行家伙加上就行了 还有就是这个 使用mysqli对象中的query()方法每次调用只能执行一条SQL命令. 如果需要一次执行多条SQL命令,就必须使用mysqli对象中的 multi_que

php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法_php实例

今天遇到GD的resizeimage 函数处理jpg后缀文件的缩略图的时候 提示该图片不是合法的jpg图片并报错 <b>Warning</b>: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Invalid SOS parameters for sequential JPEG 国内网上查了很多资料也没找到有效的解决办法,原来只要把 GD的jpeg文件支持打开即可解决 ini_set('gd.jpeg_igno

微信零钱提现提示交易异常原因分析与解决办法

1.我们先来提现看看,我们在微信中点击[我]点击打开[零钱]如下所示; 2.进入之后我们再点击[提现]选项打开进入效果如下; 3.好了在此填写你要[提现]金额点击提现按钮; 4.输入你绑定银行卡时设定的支付密码; 5.好了这样就提交申请了,之后点击[完成]. 6.如果没有问题就会出现提现成功了,如我们现在点击[账户安全] 7.在弹出的窗口点击打开[交易异常]; 8.好了这是什么原因我们进入然后点击提示界面中的[点击此处]; 9.之后根据向导选择操作之后点击[提交]. 10.如果客服回复之后,还是

PHP中ID设置自增后不连续的原因分析及解决办法

PHP中ID设置自增后不连续的原因分析如下所述: alter table tablename drop column id; alter table tablename add id mediumint(8) not null primary key auto_increment first; 每次删除把这两行家伙加上就行了 还有就是这个 使用mysqli对象中的query()方法每次调用只能执行一条SQL命令. 如果需要一次执行多条SQL命令,就必须使用mysqli对象中的 multi_que