PHP Session的工作原理和存储机制
sessionID 是在客户端和服务端通过 HTTP Requset 和 HTTP Response 传来传去的。sessionID 按照一定的算法生成,保证其值的唯一性和随机性。
Cookie 里存储着 Session 的 sessionID 和 Session 的生存期,如果没有设置 Session 的生存期,则 sessionID 存储在内存中,关闭浏览器时 Session 失效,重新请求页面时会重新注册一个 sessionID。
默认情况下,Session 是存储在服务器硬盘上的,在 php.ini 中可通过 session.save_path 设置 Session 文件的存储路径,默认为服务器上的 /tmp 目录。
session.save_path 配置指令还有一个可选的 N 参数来决定会话文件分布的目录深度,例如设定为 5;/tmp 将使创建的会话文件和路径类似于下面的形式:
/tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If
要使用 N 参数,必须在使用前先创建好这些目录。在 ext/session 目录下有个小的 shell 脚本,即 mod_files.sh。Windows 版本下的 mod_files.bat 可以用来做这件事。
此外,如果使用了 N 参数并且大于 0,那么将不会执行自动垃圾回收。文件储存模块默认使用 mode 600 创建文件。通过修改可选参数 MODE 来改变这种默认行为:
N;MODE;/path
其中,MODE 是 mode 的八进制表示。
使用以上描述的可选目录层级参数 N 时请注意,对于绝大多数站点,大于 1 或者 2 的值会不太合适 因为这需要创建大量的目录。例如,值设置为 3 需要在文件系统上创建 64^3 个目录,将浪费很多空间和 inode。仅仅在绝对肯定站点足够大时才可以设置 N 大于 2。
一个 Session 文件的内容如下:
siteadmin_username|s:7: special siteadmin_truename|s:6: 特殊 siteadmin_usertype|i:1;
内容的格式为:
session 名 | 值类型 : 长度 : 值;
23359.html
php相关文章
- php mysql decimal 多余的0 解决方案详解数据库
- PHP Session的优化使用详解编程语言
- PHP无法连接MySQL数据库解决办法(php连接不到mysql)
- 脚本Linux实现自动化执行PHP脚本(linux自动执行php)
- 高效的敏感词过滤方法(PHP)详解编程语言
- 以PHP、MySQL 管理图片:实现一手网络图库管理(php图片mysql)
- 助力MySQL优化:PHP助力提升效率(mysql优化php)
- 数据库快速修改MySQL数据库:使用PHP进行快速修改(php修改mysql)
- MySQL验证:PHP实现细节(php验证mysql)
- PHP 操作 Redis:实现强大的数据存储 (php操作redis)
- PHP如何准确获取MySQL数据库中的错误信息?(php获取mysql错误)
- 安装php扩展mysql:指南及步骤(安装php扩展mysql)
- PHP在Linux中的路径指引(php路径linux)
- PHP操作MySQL:删除字段(php删除mysql字段)
- Linux部署PHP:极速入门指南(linux如何部署php)
- 使用PHP实现远程连接MSSQL数据库(php远程连接mssql)
- 仅用PHP操作MSSQL,实现快速下载!(php mssql下载)
- PHP开启Redis扩展:实现网站快速加载(php开启redis扩展)
- PHP图片上传至MySQL:实现快速可靠的数据存储(php图片上传mysql)
- php&java(二)
- php-accelerator网站加速PHP缓冲的方法
- PHP下判断网址是否有效的代码
- PHP设计模式注册表模式
- php打开文件fopen函数的使用说明
- PHP源码分析之变量的存储过程分解