我刚接触php,对php的session 不明白,我在php.ini 文件里设置session.save_path = "F:\facai\session" ,并且文件夹下面能够产生session,但是运行代码的时候,如果点击快的时候,真个服务就锁死了,我估计是session锁的问题,代码是别人的,我看了下里面有很多session_start();语句,但是没有session_write_close()语句,程序是别人的,但是在别人的系统上运行正常。我想应该不是session没有关闭的问题,应该是我的php配置的问题。顺便问一句,session_start();之后一定要session_write_close()吗?如果是的话,为什么别人的系统就没有问题?
session_start();后一般都不用session_write_close();
期间如果有同名 sessionid 出现,则因文件被锁定而处于排队状态
所以如果你的应用程序有并发现象时(比如频繁的ajax请求),那么就应该及时的执行 session_write_close() 以使临时文件解锁。
对于其他方式的 session 不存在这个现象
不存在的,改用的地方就要用!重复执行则 php5.4 会有警告你部署在本地,不就是测试吗?须知一个浏览器窗口的所有的选项卡的cookie是能够共享的,所以你点开多个选项卡,得到的 sessionid 都是相同的
<?php
session_start();
if (!isset($_SESSION['islogin']) && $_SESSION['islogon']!="Yes"){
Header("Location:login.php");
exit();
}
?>
我现在还不能确认是不是用session_start();之后必须用session_write_close()呢,还是我部署的有问题呢?
意思就是:包含此代码的页面只有用户才可访问
<?php
session_start();
if (!isset($_SESSION['islogin']) && $_SESSION['islogon']!="Yes"){
Header("Location:login.php");
exit();
}
?>
修改成
<?php
if (!session_id()) session_start();
//session_start();
if (!isset($_SESSION['islogin']) && $_SESSION['islogon']!="Yes"){
Header("Location:login.php");
session_write_close();
exit();
}
session_write_close();
?>
然后连续点击页面,没有发现页面卡死的现象,是不是我的php版本有bug?还是windows系统造成读写session文件的问题?