美文网首页
php session

php session

作者: 苍老师的眼泪 | 来源:发表于2020-09-19 17:06 被阅读0次
  1. session中重要的函数:
session_write_close();

操作完某个session文件后,及时调用以上函数可以解除该session文件的锁。(session_start会锁住当前脚本需要访问的session文件,直到脚本结束自动解开或者直接手动调用session_write_close()等方法解开该session文件的锁。在session的文件锁被解开之前,其他程序访问不了该session所以会阻塞。其它的session文件如果没有被文件锁锁住,则不受影响)

  1. session GC
    当用file存储session文件时,存放session的文件会越来越多,此时要想办法自动清理那些废弃的session文件,session GC做这件事情的。用一句话来描述是:每次在session初始化的时候(session_start),有session.gc_probability / session.gc_divisor的概率(以下设置为1 / 1000)的可能性启动gc进程来清除那些超过session.gc_maxlifetime(以下设置为1440)秒没有被访问过的session文件。
    谨记:
; NOTE: If you are using the subdirectory option for storing session files
;       (see session.save_path), then garbage collection does *not*
;       happen automatically.  You will need to do your own garbage
;       collection through a shell script, cron entry, or some other method.
;       For example, the following script is the equivalent of setting
;       session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
;          find /path/to/sessions -cmin +24 -type f | xargs rm
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
  1. session 退出登录
session_start();
setcookie('PHPSESSID', '', -1);
session_unset();
session_destroy();
  1. php设置、获取session文件的存放目录
    (1)设置php.ini
session.save_path

(2)调用函数 读取/设置当前会话的保存路径

session_save_path();
  1. cookie被禁用了,session还能用么?
    (1)能用,php有两种方式用来传送会话 ID:Cookies 和 URL 参数,(如果同时传,则接收前者的值)后者没那么安全。
    (2)cookie没有被禁用的时候,浏览器向服务器发送请求时,会自动带上cookie。SESSIONID放在cookie里面,所以服务器可以根据SESSIONID找到相应的session文件。
    (3)cookie被禁用时,还可以通过get、post参数来向服务器提供SESSIONID。
    (4)php支持通过URL 参数 来向服务器提供SESSIONID。但是要设置php.ini:
session.use_only_cookies = 0
session.use_trans_sid = 1

或者调用session_start时给出参数:

session_start(['use_only_cookies'=>0, "use_trans_sid"=>1]);

覆盖php.ini中的配置项。

tips: php可以用

setcookie('PHPSESSID', '', -1);

来模拟cookie被禁用的情况。

相关文章

网友评论

      本文标题:php session

      本文链接:https://www.haomeiwen.com/subject/gxieyktx.html