PHP如何将Session存储在数据库中(1)
PHP在默认情况下将会话数据写入一个文件并将它放在session.save_path配置选项制定的位置。在创建一个新会话并且分配一个会话ID时,PHP在这个目录中写入一个文件,文件名以sess_开头,以会话ID结束(例如sess_3652e5b3ac02asd44aed25f05v8601c7)。每次在这个会话操作的页面完成执行时,PHP将$_SESSION数组中的数据写入这个文件。下一次启动统一会话时,PHP从这个文件装载数据并且重新安装这个数组。
同时,PHP会定期遍历这些文件(准确的周期可以通过session.gc_probability和session.gc_divisor陪着你选项来控制),寻找过期的会员Session并删除。
以上所介绍的这种机制工作得很好,非常适合中小企业Web应用程序。但是当编写大型Web应用程序并开始跨服务器共享负载时,就会出现一个问题。在这种情况下,属于同一会话的不同请求可能会被发送给不同的服务器。如果会话数据只保存到其中一台服务器的存储文件中,那么就无法从另一台服务器访问它。
一种可能的解决方案是借助于基于网络的文件系统,比如用于Unix的Network File System(NFS)或用于WINDOWS的Microsoft SMB Shares。不幸的是,这两种系统都有不完整的文件锁解决方案,因此在目录和文件的并发访问方面有困难。
更好的解决方案是使用数据库进行存储,因为数据库具有很有的可靠性、并发性和事物处理功能。唯一的问题是,找到一个在PHP中如何使用数据库的方法,而不是使用默认的基于文件的会话存储机制。
相关文章:If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments
还没有评论。
发表评论