代码之家  ›  专栏  ›  技术社区  ›  Bruce the Hoon

设置自定义错误处理程序会大大增加脚本执行时间

  •  1
  • Bruce the Hoon  · 技术社区  · 16 年前

    <?php
    function mailErrorHandler($errno, $errstr)
      {
      echo "<!--PHP ERROR:";
      echo "---[$errno] $errstr ---";
      echo "-->";
      error_log("Error: [$errno] $errstr",1,
      "myemail@myserver.com","From: me@workserver.com");
      }
    
    set_error_handler("mailErrorHandler",E_ALL);
    
    echo 1-thisisnotanumber;
    
    ?> 
    

    4 回复  |  直到 16 年前
        1
  •  1
  •   mattbasta    16 年前

    也许你抛出的不是错误,而是一堆注意“异常”。如果你将它们设置为不显示(大多数PHP版本的默认设置),并且你得到了大量的错误,那么你可能会运行错误处理程序数百次。每次运行处理程序时,它都必须进行跟踪,跳出当前作用域,进行各种处理,如果这一切都是因为您正在使用 =& new

    因此,为了解决这个问题,医生建议关闭测试服务器上的错误处理程序,打开通知的显示,运行流程并记录任何错误/通知等,然后在生产箱上修复上述通知。

    希望这能有所帮助!

        2
  •  0
  •   Peter Loron    16 年前

    另一个想法。..启动Xdebug并在运行时进行配置文件转储,看看这是否揭示了一直以来所花费的时间。

        3
  •  0
  •   powtac    16 年前

    exit() 之后 error_log()

        4
  •  0
  •   powtac    16 年前

    另一种解决方案是,如果您在使用error_hander时遇到问题,可以登录到一个文件:

    log_errors = On
    html_errors = Off
    error_log = log