Php 注册\关闭\函数()-最佳做法是什么?

Php 注册\关闭\函数()-最佳做法是什么?,php,Php,我目前正在使用register\u shutdown\u function()进行多种用途。一个用于处理致命错误,另一个用于记录执行期间使用的资源,如时间、内存等 目前,我注册了两个不同的关机功能,但在一个测试中,只有第一个运行,而另一个似乎失败了。当然,这可能是由函数本身中的某个错误触发的,所以我重写了它,但是否可能是由于使用了几个寄存器函数调用而导致的错误?那么,在这里,注册两个不同的函数,或者只调用一个处理不同任务的函数,这是什么最佳实践呢 如果发生致命错误,让函数加载一个类进行错误处理是

我目前正在使用register\u shutdown\u function()进行多种用途。一个用于处理致命错误,另一个用于记录执行期间使用的资源,如时间、内存等

目前,我注册了两个不同的关机功能,但在一个测试中,只有第一个运行,而另一个似乎失败了。当然,这可能是由函数本身中的某个错误触发的,所以我重写了它,但是否可能是由于使用了几个寄存器函数调用而导致的错误?那么,在这里,注册两个不同的函数,或者只调用一个处理不同任务的函数,这是什么最佳实践呢

如果发生致命错误,让函数加载一个类进行错误处理是否也是安全的(并且是可能的),或者我应该将该功能保留在函数本身中吗

我得到的最后一个问题是,是否有比使用关闭函数更好的方法来处理致命错误?我尝试使用set_error_处理程序,但它并没有覆盖所有的错误类型,所以一些错误不会触发此错误

希望这些问题制定得很好,也很清楚。我的目标是尽可能地保持代码的可靠性,而对于我遇到的问题,我找不到任何合适的答案


*编辑:找到了我第一个问题的答案,注册几个函数应该没有问题,因此错误必须在函数本身内。将问题留给您去回答是否有更好的方法来处理致命错误。

IIRC,如果您注册了多个关闭函数,它们将按照注册的顺序执行;并且,在任何情况下都不应该有exit语句,否则后续关闭函数将不会运行。这意味着如果您有多个功能而不是一个关闭功能,则需要非常小心

但是,如果要将不同的参数传递给不同的函数,则应确保在设置所有适当的变量之前调用函数(可能由错误触发)时,这些函数都具有默认值

就我个人而言,我注册了多个功能,目的与你自己相似;但我对它们内部的逻辑和注册顺序非常谨慎

在关闭函数中使用include或类似的函数也不是一个好主意(特别是当一个函数是异常处理程序时),以防include本身触发异常

Thank Mark:)那么我将避免在关闭函数中使用类或任何其他include。可能是由于意外退出()或死亡(),导致第二个函数无法执行。已经重写了代码,所以现在它100%工作了。给你+1和正确答案,用一个好的答案覆盖我问题的主要部分:D