gpt4 book ai didi

php - 为什么我在设置 $_SESSION 值时会看到执行超时?

转载 作者:可可西里 更新时间:2023-11-01 13:48:41 25 4
gpt4 key购买 nike

我在 PHP 错误日志中看到以下错误:

PHP fatal error :第 3 行 D:\sites\s105504\www\index.php 中超过 60 秒的最大执行时间
PHP fatal error :第 4 行 D:\sites\s105504\www\search.php 中超过 60 秒的最大执行时间

有问题的行是:

index.php:

01 <?php
02 session_start();
03 ob_start();
04 error_reporting(E_All);
05 $_SESSION['nav'] = "range"; // <-- Error generated here

搜索.php

01 <?php
02
03 session_start();
04 $_SESSION['nav'] = "range";
05 $_SESSION['navselected'] = 21; // <-- Error generated here

分配一个 $_SESSION[] 值真的需要 60 多秒吗?

平台是:

  • Windows 2003 SP2 + IIS6
  • Windows 2003 的 FastCGI(原始 RTM 版本)
  • PHP 5.2.6 非线程安全构建

当 session 过期时,在服务器上清除 session 数据文件没有任何问题。我看到的最旧的 sess_XXXXXXXXXXXXXX 文件大约存在 2 小时。

事件日志中没有明显的磁盘超时或其他可能表明创建 session 数据文件有困难的磁盘健康问题。

该站点也在负载不重的服务器上。该站点很忙,但没有受到重创,并且响应迅速。只是我们每隔三四个小时就会连续出现三四个错误。

我还应该补充一点,我不是此代码的原始开发人员,它属于开发人员早已离开的客户。

最佳答案

session 阻塞。 session_start() 将阻止执行,直到它可以在该特定 session 的文件上获得独占锁。这是为了防止出现并发问题。当您完成每个脚本中的 session 时,您可以通过发出 session_write_close() 来解决它。您在下一行看到它的原因是 session_start() block > 超过最大执行时间。所以当它返回时,下一行在时间限制之后执行,所以这就是引发错误的地方。

参见:session_write_close()了解更多信息

哦,根据您发布的错误,错误是在 ob_start();$_SESSION['nav'] = "range"; 行,而不是您在代码部分中指示的第 5 行...

关于php - 为什么我在设置 $_SESSION 值时会看到执行超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2999663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com