【问题标题】:Session Regenerate ID Exceeding Maximum Execution Time?会话重新生成 ID 超过最大执行时间?
【发布时间】:2012-04-13 04:37:22
【问题描述】:

由于某种原因,有时我的 PHP 代码在共享服务器上运行时会出现以下致命错误:

致命错误:第 8 行的 C:\HostingSpaces[username][subdomain]\wwwroot\index.php 中的最大执行时间超过 30 秒

那一行就是:

session_regenerate_id();

这个问题可能是由托管在共享服务器上的代码和资源不可用引起的吗?还是有其他原因导致此问题?

由于它是共享服务器,我无法更改任何 PHP 设置。

编辑:

第 8 行之前的唯一一行是用于模型对象的几行 require_once。唯一的另一行是session_start()

我检查了我的 PHP 设置,它指出 session.save_handler 是本地和主值的文件。既然是使用文件,那问题可能是试图从磁盘读取和写入?

【问题讨论】:

  • 您的会话是基于文件还是基于数据库?
  • 你能提供更多的代码吗?也许是第 8 行之前的行?会话处理程序默认使用文件。您可以通过查看您的phpinfo(); 来仔细检查。 (寻找“session.save_handler”。)
  • ghbarratt 说了什么。您应该会看到类似session.save_handler => files => files 的内容。我想知道是否因为它位于共享主机上,所以存在某种 I/O 等待。
  • @ghbarrat:我已经用来自phpinfo() 的值更新了我的帖子。

标签: php session fatal-error


【解决方案1】:

我认为您的问题可能是您怀疑的性能和资源问题,但我觉得奇怪的是它只在第 8 行停止。我猜如果其余代码非常最小。

您是否尝试过更改代码以使超时发生在不同的行上?例如,您可以尝试添加 sleep(25); 并查看是否在该行发生了致命超时。

另外,您确定不能设置最大执行时间限制吗?我怀疑即使您无法更改共享的 php.ini,您也可以通过以下其他选项之一设置 max_execution_time

我相信max_execution_time 的值/参数以秒为单位,如果将其设置为 0(零),则不会使用执行时间限制。 (您是否认为使用零是否安全取决于您。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2016-05-07
    • 1970-01-01
    • 2019-08-13
    • 2015-04-03
    • 1970-01-01
    • 2020-04-29
    相关资源
    最近更新 更多