2011-05-20 47 views
0

在我的研究中,我发现在这个问题上双向指向的意见。希望能够澄清这个问题。PHP:默认/ tmp会话VS session_set_save_handler()性能

我们知道将会话数据存储在数据库中的明显有利的安全方面。

选项1:

在文件系统中使用的默认会话存储(默认为是/ tmp)

选项2:

使用session_set_save_handler()到 将会话数据存储在/ a 中数据库。


我的问题是:

  1. 在一个高流量的网站,有什么例子就是提供最佳性能?
  2. 这是一个系统硬件的问题,这个特定网站的瓶颈在哪里?在这种情况下,该网站主要指向显示来自数据库的特定用户数据。可能这是一个需要服务器错误输入的问题。
  3. 该网站可能不得不迅速传播到多个服务器,以处理来自世界其他地区的负载和可访问性。想想CDN。这会影响我的决定吗?我认为,如果它存储在数据库中,管理不同计算机之间的会话信息会容易得多。

回答

1

为什么存储到/ tmp不被高流量站点青睐的原因是因为它们使用负载平衡。负载均衡可以有效地交换哪台机器提供数据。如果会话在/ tmp中,并非所有计算机都具有相同的/ tmp目录,这意味着您的用户可能会开始显示登录或注销,原因不明。

这就是为什么有些网站在数据库中存储数据。然而,这是无效的,因为对网站的每个请求都意味着从db中获取信息,这意味着不断连接,将数据从文本转换为数组等等。

所以,还有第三种选择 - 将会话数据与Memcache一起存储。这很简单,如果你对这个问题有一点点的了解,你会找到答案,你可以在5分钟内完成整个事情。

+0

由于会话ID,负载均衡器可以选择机器。 – Gumbo 2011-05-20 13:27:50

+0

这不仅仅是负载平衡,我以此为例。还有一些会话保存在/ tmp中,比如任何有权访问本机的人都可以篡改会话文件等等。这是一个关于性能和将数据直接存储到RAM的问题,是处理会话存储/检索的最快方法。 – 2011-05-20 13:32:00