【问题标题】:session_start() Hangs The Serversession_start() 挂起服务器
【发布时间】:2010-04-21 00:36:13
【问题描述】:

完全被这个弄糊涂了……

我们有一个 WAMPServer 安装设置,运行来自不同文档根目录的多个虚拟主机。

就在最近,一个特定的域开始挂起服务器。我们将其追溯到 session_start()。如果我们把它注释掉,就没有问题(当然,除了我们不能对会话做任何事情的事实)。如果未注释它,它将挂起页面加载,并且在重新加载足够多的情况下,将挂起整个服务器。

所有其他网站仍然可以完美运行它们的会话。据我所知,使用会话的方式没有什么不同。我正在进一步研究它(以防有人改变了某些东西)但现在我希望有一些方向:)

那么,有什么想法吗?

【问题讨论】:

  • 很可能是权限错误,但是,代码可能包含自定义会话处理程序。检查 session_set_save_handler 的代码。自定义会话命令可能存在问题。
  • 您是否有任何长时间运行的使用会话的 php 脚本?
  • @chris:没有长时间运行的脚本,@Don:将寻找自定义会话处理程序,谢谢。
  • 你的 php.ini 中有 session.use_trans_sid = 1 吗? bug #22154

标签: php session


【解决方案1】:

所以,我猜测这是一个应用层问题,因为其他站点的会话工作正常。但是,这假设他们的会话配置方式相同 - 通过仔细检查您的网站与其他网站相比,您的网站在其配置中没有做一些“独特”,可以节省一些时间。

接下来我将检查在您的应用程序中运行的其他与会话相关的代码。可能是通过调用 session_start() 您将应用程序置于运行其他代码的状态。例如,也许有一段代码说“只有在设置了这个会话变量时才运行这个函数”,并且通过启动会话你暴露了那个变量,它不会被暴露,因此不会运行有问题的函数如果会话没有开始。

祝你好运。

【讨论】:

  • 您是完全正确的,因为启用会话会导致会话变量存在于其他地方,并且从那里开始,该变量是最终的问题...感谢您的评论,因为它推动了我的大脑一点点!
  • 太棒了 - 很高兴听到我的帮助。 :-)
【解决方案2】:

如果您使用基于文件的会话,我的第一个猜测是文件权限。如果您正在使用数据库会话,那么我会检查以确保表没有损坏。另外,是 Apache、PHP 还是其他被锁定的东西?

【讨论】:

    【解决方案3】:

    您可能在底层基础架构中遇到了无法解决的错误。在继续尝试诊断此问题之前,您至少应该清除所有现有会话。

    【讨论】:

      猜你喜欢
      • 2011-05-19
      • 1970-01-01
      • 2012-02-21
      • 2022-01-17
      • 2015-10-03
      • 1970-01-01
      • 2014-04-12
      • 2011-12-14
      • 2016-06-06
      相关资源
      最近更新 更多