由于http协议是一种无状态协议,所以没有办法在多个页面间保持一些信息。例如,用户的登录状态,不可能让用户每浏览一个页面登录一次。session就是为了解决一些需要在多页面间持久保持一种状态的机制。PHP从4.1版本开始支持session机制。

一、session运行机制

session_start():在页面中调用此函数,PHP会在服务器端生成一个session文件,并将一个空字符串写入到文件中;在页面结束生命周期前,session会把在此生命周期内产生的数据写入到session的文件中。

二、session在php.ini中的配置

与sessionId传递相关的设置:

1、session.use_cookie = 1 //是否采用cookie传递sessionId,默认是1,表示启用

2、 session_name = PHPSESSID //通过cookie或者get传递sessionId的键名

3、session.use_only_cookie = 0 //表示只用cookie传递sessionId

4、session.cookie_lifetime = 0  //关闭浏览器清除cookie值

5、session.cookie_path = / //浏览器cookie文件存储路径

6、session.cookie_domain =  //cookie对应的域名地址

与session文件存储相关的设置:

1、session.save_handler = file //用户读取和存储session数据的方式,默认是file

2、session.save_path = "/var/lib/php/session" //指的保存session文件的目录,可以指定到其他目录,但是目录必须要有httpd的守护进程属主权限。

3、session.auto_start = 0 //如果启用,每次请求都会初始化session。建议不启用通过session_start()来启用

与session回收有关的php.ini的设置:

1、session.gc_probability 和 session.gc_divisor //确定了GC启用的概率,默认是1/1000

2、session.gc_maxlifttime = 1440 //设置session文件存活时长

三、几个常用的操作session的函数

1、session_start() //初始化session,一个session的生命周期开始。session的初始化意味着声明一个$_SESSION全局数组变量,并读取session文件中的值到$_SESSION变量中

2、$_SESSION //数组类型,在生命周期内读取session到数组中,同时也可以赋值给他,并在页面关闭时把值写入的session文件中。

3、session_unset() //清空session数据,或者是说清空$_SESSION中的值

4、session_destroy() //注销一个session会话,意味着session的生命周期结束了。同时,会删除服务器上的session文件,但不会删除全局变量$_SESSION,如果删除全局变量可以用unset()函数。

四、session的回收

session文件失效分为两部分,一部分为浏览器存储的cookie可以通过expire设置过期,服务器端的session文件,PHP通过启动GC进程来清除相关session文件。

PHP相关session的知识的更多相关文章

  1. Session基础知识

    Session基础知识 主题 概念  Session的创建 Session的存储机制 Session的失效 参考资料   概念        Session代表一次用户会话.一次用户会话的含义是:从客 ...

  2. [转]一些NSArray,NSDictionary,NSSet相关的算法知识

    iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...

  3. 尚学linux课程---9、yum相关操作和知识

    尚学linux课程---9.yum相关操作和知识 一.总结 一句话总结: 如何使用比如163,阿里云给yum配置yum源:去官网,不要百度:直接去官网,有帮助文档的(比如centos的就在centos ...

  4. Build2016上值得一看的大数据相关Session

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:Build2016开完很久了,现在才来回顾下,就说说那些和大数据相关的Session, ...

  5. SESSION的知识

    android模拟表单用到了httpclient,但是需要了解Jsessionid的相关知识 如下是从一篇博文摘抄来的 在web应用的开发中我们会经常看到这样的url:http://www.xxx.c ...

  6. 一些NSArray,NSDictionary,NSSet相关的算法知识

    iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...

  7. 遍历删除查临时表相关session再操作表

    示例如下 删除 inf_getuserinfoforywh_temp1 (前提,相关用到inf_getuserinfoforywh_temp1的应用必须先停了) create or replace p ...

  8. http session 基础知识

    因为Http的无接连,无状态,所以造就了Cookie,Session的诞生. Session也是类似Cookie一样的功能,用于记录客户端浏览器与服务器端交互的会话状态.它与Cookie的重要区别是: ...

  9. 测量行业(RTK)相关的小知识总结

    RTK测量系统,一般需要先架设基准站(参考站),数据链模式外挂大电台(有天线大功率模式,理想范围方圆18公里以内).基准站通过收到卫星(多星)进行计算出当前的位置. 其中涉及到频率的设置,波特率,以及 ...

随机推荐

  1. Where is the Marble UVA - 10474

     Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on th ...

  2. jasypt在springboot项目中遇到异常:Error creating bean with name 'enableEncryptablePropertySourcesPostProcessor' defined in class path resource

    背景 在使用jasypt对spring boot的配置文件中的敏感信息进行加密处理时,使用stater直接启动时,遇到了一个异常 <dependency> <groupId>c ...

  3. HUAWEI防火墙双出口据链路带宽负载分担

    组网图形 组网需求 通过配置根据链路带宽负载分担,使流量按照带宽的比例分担到各链路上,保证带宽资源得到充分利用. 如图1所示,企业分别从ISP1和ISP2租用了一条链路,ISP1链路的带宽为100M, ...

  4. Blade模板引擎教程-常用语法格式

    打印变量或者默认值,这个语法会自动转义变量内容中的html标记,使得html标签原样输出Welcome, {{ $name or 'California' }} 打印变量原始内容,不进行转义的用法{! ...

  5. 洛谷P1423 小玉在游泳

    题目描述 小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦.已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%.现在小玉想知道,如果 ...

  6. dalvik浅析二:jni、so

    android大多使用java来开发,java中有个概念叫jni.当然说到jni,必然是少不了native code.在android中就是so库.我们来分析下jni在android dalvik的使 ...

  7. android 资料

    https://xfans.gitbooks.io/android-book/content/issue-39/Android%20dex%E5%88%86%E5%8C%85%E5%AF%BC%E8% ...

  8. 【python】Leetcode每日一题-矩阵置零

    [python]Leetcode每日一题-矩阵置零 [题目描述] 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 .请使用 原地 算法. 进阶: 一个直观的解 ...

  9. java之I/O流

    I/O流的使用情况多种多样,首先它的数据源就可能是文件.控制台.服务器等,它的单位可能是按字节.按字符.按行等.为了涵盖所有的可能,java类库中创建了大量的类,如此多的类让我们在使用时感觉有点难以选 ...

  10. MyBatis Generator(SSM Maven项目)

    mbg.xml 放在项目目录里 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE genera ...