【问题标题】:PHP: Default /tmp sessions VS session_set_save_handler() performancePHP:默认 /tmp 会话 VS session_set_save_handler() 性能
【发布时间】:2011-05-20 13:01:15
【问题描述】:

在我的研究过程中,我发现了在这个问题上指向两个方向的观点。如果能澄清这个问题,我们将不胜感激。

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

选项 1:

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

选项 2:

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


我的问题是:

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

【问题讨论】:

    标签: php database performance session


    【解决方案1】:

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

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

    所以,还有第三个选项 - 使用 Memcache 存储会话数据。这真的很简单,如果你用谷歌搜索一下,你会找到答案,你可以在不到 5 分钟的时间内完成整个设置。

    【讨论】:

    • 负载均衡器可以根据会话 ID 选择机器。
    • 不只是负载均衡,我以它为例。会话保存在 /tmp 中还有其他内容,例如任何有权访问机器的人都可以篡改会话文件等。这是一个关于性能的问题,将数据直接存储到 RAM 是处理会话存储/检索的最快方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多