session工做机制是:当程序须要为某个客户端的请求建立一个session的时候,服务器首先会检查这个客户端是否包含了一个session标志,咱们称之为session_id,若是客户端不包含session_id,会从新生成一个session_id。
session关闭条件:1.启用了session_destroy重置函数时候删除2session的上次活动时间距离当前时间的间隔超过了session的超时设置时间也会自动关闭3.服务器进程被中止
session的默认生命周期在php5里是180分钟(每一个客户端访问都会留一个session的小文本占用一点内存作记录,因此要按期清除必定的session,为了保证性能)
与session相关的一些经常使用函数:
1. session_id 获取当前的session_id 会话识别id
若是指定了 id 参数的值, 则使用指定值做为会话 ID。 必须在调用 session_start() 函数以前调用 session_id() 函数。 不一样的会话管理器对于会话 ID 中可使用的字符有不一样的限制。
2.session_name — 读取/设置会话名称 session_name() 函数返回当前会话名称。 若是指定 name 参数, session_name() 函数会更新会话名称, 并返回 原来的 会话名称。
3.session_save_path ([ string $path ] ) session的保存地址 默认的保存文件名称是sess_SESSIONID
session的默认读取函数
4.session_set_save_handler
设置用户自定义会话存储函数 默认的使用例子
class MySessionHandler implements SessionHandlerInterface
{
// 在这里实现接口
}
$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();
php.ini里与session相关的最经常使用的设置:
1.session.use_cookies默认值是1.表示用cookie来传递session_id(),反之是用query_string来传递
2.session.name 这是用来储存session_id的键值,默认是PHPSESSID。session经过这个来保存session的信息
3.session.cookie_lifetime:这个表明SessionID在客户端Cookie储存的时间,默认是0,表明浏览器一关闭SessionID就做废……就是由于这个因此Session不能永久使用!
4.session.gc_maxlifetime = 1440 这个是Session数据在服务器端储存的时间,若是超过这个时间,那么Session数据就自动删除!
5.session的保存路径:(有些系统没有权限读取默认的session储存路径Linux里是/tmp)
session_save_path(dirname(__FILE__).'/phpernote/');
设置保存路径的时候,须要先先于session_start()的启动 不然是保存不了的
ini_set('session.save_path', dirname(__FILE__).'/phpernote/');php