PHP session 阻塞问题

由于PHP 实现session的机制 默认是利用把信息储存在文件里的,这就是涉及到读取文件

需要保证一定安全性所以需要在读写的时候锁文件,如果不及时解锁,如程序的业务过程较长就会导致后面需要再session时就会有个时间过程,就是说session阻塞了。

这种问题就是在同域下的程序文件执行下,如果需要session值时也会导致时间等待

(a.php 设置session值)(b.php 获取session)

 

 

当session_start();开启时,这个会话就开启了如果需要结束,需要手动 ,用到session_write_close函数或session_commit函数

代码示例:

<?php
session_start();
$_SESSION['name'] = 'yangshiyi';
sleep(8);
var_dump($_SESSION['name']);

上面代码需要8秒才能执行$_SESSION['name'],如果其他页面正好用到也会等8秒

写在同一个文件的不同的session值,同样会阻塞

需要如此解决了:

<?php
session_start();
$_SESSION['name'] = 'yangshiyi';
session_commit();
sleep(8);
var_dump($_SESSION['name']);

如果用Redis作为媒介不用考虑阻塞,但需要考虑Redis连接数过小的问题

 

posted @ 2022-10-31 07:33  闲时一点  阅读(64)  评论(0编辑  收藏  举报