代码之家  ›  专栏  ›  技术社区  ›  erlando

为什么在设置$会话值时会看到执行超时?

  •  4
  • erlando  · 技术社区  · 15 年前

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

    PHP Fatal error: Maximum execution time of 60 seconds exceeded in D:\sites\s105504\www\index.php on line 3
    PHP Fatal error: Maximum execution time of 60 seconds exceeded in D:\sites\s105504\www\search.php on line 4

    有问题的线路是:

    索引.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[] 价值

    平台是:

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

    会话过期时,服务器上清除的会话数据文件没有任何问题。最老的 sess_XXXXXXXXXXXXXX

    事件日志中没有明显的磁盘超时,或者其他此类磁盘运行状况问题可能表明创建会话数据文件有困难。

    该站点也位于负载不重的服务器上。该网站很忙,但没有被锤击,是非常迅速的反应。只是我们每三四个小时,就会连续出现三四个错误。

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

    1 回复  |  直到 13 年前
        1
  •  9
  •   ircmaxell    15 年前

    会话被阻塞。 session_start() session_write_close() 完成每个脚本中的会话后。你在下一行看到它的原因是 会话启动() 块用于>超过最大执行时间。因此,当它返回时,下一行在时间限制之后执行,这就是引发错误的地方。

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

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