我打算制作自己的自定义会话处理功能。我想将它保存在数据库中,但我有一些疑问。
它是否可行或只会减慢我的应用程序?
我必须在每个set
之后保存会话,或者我可以立即保存所有内容吗?因为我有这个想法把这个函数放在类析构函数方法中。所以,当程序结束时,它会将数据保存在数据库中。
但是如何才能使用我的其他类(数据库类),确保它在会话类之前不会被破坏?
如果用户退出连接并且应用停止运行,仍然会调用析构函数?
所以,你们觉得怎么样?你建议我做什么?
答案 0 :(得分:1)
我一直使用Zend和Symfony的数据库会话,所以它绝对可行,当然会有成本但很可能没有什么重要意义。
通常这些处理程序的工作方式是使用session_set_save_handler
,这种方式正常工作,除了写入数据的实际函数。但请注意有关物体破坏的警告。
答案 1 :(得分:0)
是的,它通常会比PHP的本机会话处理程序稍慢,但它不应该引人注意。这是除非您遇到文件锁定问题(如Windows)(
)答案 2 :(得分:0)
为什么要永久存储会话数据? 通常人们使用不同的会话处理程序来使应用程序更快(我们使用memcache进行会话,因为我们的应用程序非常复杂和分布式,我们希望它能够快速运行)。我认为这个要求是糟糕的应用程序设计,如果你想以某种方式跟踪访问者,有很多更好的方法。或者您正在使用会话来完成它不太适合的事情。当然,我可以想象可能存在这样的要求,我不认为情况就是这样。