Warning: session_start(): Unable to clear session lock record in /www/wwwroot/www.vipcyjr.cn/wp-content/plugins/clogin-passport/clogin-passport.php on line 209

Warning: session_start(): Failed to read session data: memcached (path: 127.0.0.1:11211) in /www/wwwroot/www.vipcyjr.cn/wp-content/plugins/clogin-passport/clogin-passport.php on line 209
session使用时卡死、session锁定导致并发阻塞解决办法-创意分享

session使用时卡死、session锁定导致并发阻塞解决办法

原因:

原因在于:执行session_start()后,对应的session文件是被锁定的,直到当前脚本结束才会解锁。

session数据被锁定以防止并发写入,所以任何时候只有一个脚本可以在session上运行。

在锁定期间,另一个进程访问相同session id 要等文件解锁后session_start()才会开始。

解决办法

办法也非常简单,开启session后,做了相应的操作,一定要关闭session;

例如:只需要在 session 设置好数据后调用, session_write_close() 将数据写入文件并且结束session;

PHP示例代码如下:

1
2
3
<!--?php &lt;br ?--> session_start();
$_SESSION["name"] = '创意电子';
session_write_close();

如果不加入session_write_close();并发3个进程访问该页面,第一个进程执行10秒 第二个执行20秒 第三个执行30秒。

加入session_write_close()后 ,并发3个进程会同时在10秒后执行完成!

1

评论0

没有账号? 注册  忘记密码?