PHP:默认/ tmp会话VS session_set_save_handler()性能

时间:2011-05-20 13:01:15

标签: php database performance session

在我的研究过程中,我发现了关于这个问题的双向指示。我们将不胜感激地讨论这个问题。

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

选项1:

  

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

选项2:

  

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


我的问题是:

  1. 在人流量大的网站上,哪个例子会带来最佳效果?
  2. 这是系统硬件的问题吗?这个特定网站目前的瓶颈在哪里?在这种情况下,站点主要指向从数据库显示特定用户数据。可能这是一个需要服务器故障输入的问题。
  3. 该网站可能很快就会传播到多个服务器,以处理来自世界其他地方的负载和可访问性。想想CDN。这会影响我的决定吗?我认为如果将不同计算机之间的会话信息存储在数据库中,这将更加容易。

1 个答案:

答案 0 :(得分:1)

在高流量站点上存储到/ tmp不受欢迎的原因是因为它们使用负载平衡。负载平衡有效地交换机器传递数据。如果会话在/ tmp中,并非所有计算机都具有相同的/ tmp目录,这意味着您的用户可能会开始出现登录或注销,没有明显原因。

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

所以,还有第三个选项 - 用Memcache存储会话数据。这真的很容易,如果你对谷歌有所了解,你会找到答案,你可以在不到5分钟的时间内完成整个过程。