代码之家  ›  专栏  ›  技术社区  ›  Hugo Mota

在数据库中保存会话的最佳方法是什么?

  •  0
  • Hugo Mota  · 技术社区  · 15 年前

    我正在计划创建自己的自定义会话处理功能。我想把它保存在数据库中,但我有一些疑问。

    • 它是可行的还是会减慢我的应用程序的速度?

    • 每次结束后我都要保存会话 set 或者我可以一次全部保存下来吗?因为我有这个想法把这个函数放到类析构函数方法中。所以,当程序结束时,它将把数据保存在数据库中。

      • 但是如何使用我的另一个类(数据库类)来处理这个问题,确保它不会在会话类之前被销毁?

      • 如果用户退出连接,应用程序停止运行,析构函数仍将被调用?

    你们觉得呢?你建议我怎么做?

    3 回复  |  直到 15 年前
        1
  •  1
  •   prodigitalson    15 年前

    我经常和Zend和Symfony一起使用DB会话,所以它肯定是可行的,当然会有成本,但很可能没有什么重要的。

    通常,这些处理程序的工作方式是使用 session_set_save_handler 这样,它就可以正常工作,只不过实际调用的函数会写入数据。但是要注意有关物体破坏的警告。

        2
  •  0
  •   Petah    15 年前

    是的,它通常比PHP的本机会话处理程序慢一点,但是不应该引起注意。除非您在文件锁定问题上遇到问题(如Windows)。

        3
  •  0
  •   nimmen    15 年前

    为什么要永久存储会话数据? 通常人们使用不同的会话处理程序来加快应用程序的运行速度(我们在会话中使用memcache,因为我们的应用程序非常复杂且分布广泛,我们希望它能够快速运行)。我认为这个需求是糟糕的应用程序设计,如果你想以某种方式跟踪你的访问者,有很多更好的方法。或者,您正在使用会话处理它不太适合的事情。当然,我可以想象,可能会有这样的要求,只是我不认为这是事实。