关于session_start()

php.ini中有个关于session_start的设置,效果等同于php 的 session_start();

默认session.auto_start = 0 , 开启session.auto_start = on

项目入口想开启session_start时,可以先判断php.ini中是否自动开启过:

if (!ini_get('session.auto_start')) {
session_start();
}
session_write_close();

切记,一定要加上session_write_close();不然会话写进程会一直开启,直到会话关闭,

每次操作完session后也要加上session_write_close();!!!!!!!!!

我的设置是入口文件

if (!ini_get('session.auto_start')) {
session_start();  //session读写覆盖全局
}
session_write_close();  //关闭session的写,全局只能读了,防止死锁,

如果不设置此选项,由于是全局用一个session file,浏览器访问站点的一个function,若function中sleep或卡几秒,

同一浏览器马上开其他tab访问该站点的其他function就要进入死锁等第一个function执行完才执行。

有了此选项,就相当于开启了session file , 但没人占用该资源,可以任意读,但此时的写是无效的,

所以框架底层封装了读和写session的方法,

读方法:

session_start();

$_session['xxx']='xxx';

session_write_close();

写方法:

return $_session['xxx'];

原文地址:https://www.cnblogs.com/alazalazalaz/p/4028443.html