【发布时间】:2026-01-07 13:45:01
【问题描述】:
我有一个由 HTML (AngularJS) 客户端和 PHP 后端组成的应用程序。客户端和服务器之间的所有通信都是使用 XMLHTTPRequests 完成的(当然除了加载第一个 HTML 文件和静态资源 - JS/CSS ...)。服务器公开一些 API 端点,客户端向这些 URL 发出请求。一旦服务器收到请求,它会检查 $_SESSION 以检查用户是否已登录。
我的问题是,是否有可能在几乎每个请求时从 $_SESSION 读取(而不是写入)可能会导致响应出现严重挂起?例如,应用程序处理多个请求,然后发送随机请求并在几分钟后收到响应(到目前为止记录了 15 个)。似乎请求处理得太晚了(根据 dummy error_log 测试),所以减速不是由 PHP 我的代码中的操作引起的。
也许这是一个愚蠢的问题,但我已经将 apache 的 ServerLimit (1000) 翻了一番,但没有运气。我在这台服务器上还有另一个 PHP 应用程序工作正常,我能想到的唯一区别是工作应用程序几乎不检查 $_SESSION 与 XMLHTTPRequests 的组合。
PHP 版本:5.3.3
【问题讨论】:
-
会话是如何配置的?它们是从文件、数据库中读写还是有其他机制?如果您正在基于文件存储读取/写入会话,则应用程序中将出现的第一个减速是一切都将等待硬盘驱动器返回读取信息。鉴于大多数机械驱动器每秒可以做 300 次这样的事情 - 是的,这很可能不是您的软件问题,而是硬件问题。
-
感谢您的评论。它是基于文件的。我了解硬件限制,但这不应该导致 16 分钟的延迟(希望如此),而且没有服务器的整体负载真的很低。
-
很难说到底是什么导致了如此巨大的减速,可能是你的代码,也可能是硬件故障,你必须检查哪个进程需要花费这么多时间才能完成并采取它从那里。祝你好运:)