>根据
manual,即使使用die()或exit()终止脚本,也会执行析构函数:
The destructor will be called even if script execution is stopped using exit(). Calling exit() in a destructor will prevent the remaining shutdown routines from executing.
>根据this SO question,当PHP的执行时间限制达到时,析构函数不会执行(在Apache 2上确认,Windows 7上是PHP 5.2).
>当脚本终止,因为达到内存限制,析构函数也不会被执行. (刚刚测试)
>析构函数确实执行了致命的错误(刚刚测试)更新:OP无法确认 – 似乎有一些致命的错误,事情是不同的
>它不会执行解析错误(因为整个脚本不会被解释)
>如果服务器进程崩溃或发生PHP控件中的其他异常,析构函数肯定不会被执行.
总而言之,它看起来很可靠.
除了在析构函数中进行清理以外的其他操作的缺点在于,您的选项在某种程度上是有限的.你不能再抛出异常(除了在析构函数中再次捕获它们),你不能输出任何错误消息,你不能真正依赖其他对象(如数据库接口)的存在. ….我在处理析构函数方面没有深入的经验,但我不知道你打算做什么是一个可行的想法.