我目前正在使用register_shutdown_function()用于多种用途.一种用途是用于处理致命错误,而另一种用于记录执行期间使用的资源,如时间,内存等.
目前我注册了两个不同的关机功能,但是在一次测试中,只有第一次运行而另一次运行似乎失败.现在这可以由函数本身中的一些错误触发,所以我重写了它,但是可能是因为使用了几个register_shutdown_function调用而导致错误?那么这里最好的做法是注册两个不同的函数,还是只调用一个处理不同任务的函数?
如果发生致命错误或者我应该在功能本身内保留功能,是否安全(并且可能)使函数加载一个类以进行错误处理?
我得到的最后一个问题是,是否有更好的方法来处理致命错误而不是使用关闭功能?我尝试使用set_error_handler,但它并未涵盖所有错误类型,因此某些错误不会触发此错误.
希望这些问题得到很好的阐述和清晰.我的目标是尽可能保持代码的稳定,我找不到任何问题的正确答案.
*编辑:找到第一个问题的答案,注册几个函数应该没问题,所以错误必须在函数本身内.提出问题以获得是否有更好的方法来处理致命错误的答案.
最佳答案 IIRC,如果您注册了多个关闭功能,它们将按照注册顺序执行;并且你永远不应该有任何退出语句,否则将不会运行后续的关闭函数.这意味着如果您有多个功能而不是单个关闭功能,则需要非常小心.
但是,如果要将不同的参数传递给不同的函数,则应确保在设置所有适当的变量之前调用函数(可能由错误触发)时,它们都具有默认值.
就个人而言,我注册了多个功能,为了类似的目的;但我对它们内部的逻辑以及注册顺序非常谨慎.
在关闭函数中使用包含或类似函数(特别是在一个是异常处理程序的情况下),如果包含本身触发异常,这也不是一个好主意