`
hanyh
  • 浏览: 235271 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

register_shutdown_function vs __destruct

    博客分类:
  • php
阅读更多
php中为什么有了 __destruct函数后还没有把register_shutdown_function 置为deprecated ?

代码说明一切:
<?php
class T1
{
    function __construct()
    {
        register_shutdown_function(array(&$this, 'shutdown_func'));
    }
    
    function shutdown_func() {
        $fp = fopen("/tmp/t1.txt", "w+");
        fputs($fp, "向我开炮\n");
        fclose($fp);
    }
};

$obj = new T1();
while (true) {
    // do nothing
}
执行:
Fatal error: Maximum execution time of 30 seconds exceeded in /home/hanyh/workspace/website/t1.php on line 19
结果:
hanyh@hanyh:~/workspace/git/django-pagination$ more /tmp/t1.txt 
向我开炮

<?php
class T2
{
    function __destruct()
    {
        $fp = fopen("/tmp/t2.txt", "w+");
        fputs($fp, "向我开炮\n");
        fclose($fp);
    }
};

$obj = new T2();
while (true) {
    // do nothing
}
执行:
Fatal error: Maximum execution time of 30 seconds exceeded in /home/hanyh/workspace/website/t2.php on line 13
结果:
hanyh@hanyh:~/workspace/git/django-pagination$ more /tmp/t2.txt
/tmp/t2.txt: 没有该文件或目录

由对比可知,使用register_shutdown_function才能保证即使脚本异常中止时,清理函数的代码仍然能够执行。所以在代码中必须在脚本退出时清理资源时,需要使用register_shutdown_function。
0
0
分享到:
评论

相关推荐

    php中__destruct与register_shutdown_function执行的先后顺序问题

    PHP中的__destruct和register_shutdown_function函数分别用于对象的析构和脚本执行完毕后的回调,它们的执行顺序问题是许多PHP开发者在编写涉及资源释放或程序收尾阶段代码时常会关心的。在PHP中,__destruct是语言...

    PHP register_shutdown_function函数的深入解析

    - **全局变量与作用域**:由于`register_shutdown_function`中的函数是在脚本执行结束后调用,此时脚本的上下文已不存在,局部变量不可用。除非使用全局变量或传递变量到函数中。 - **文件路径问题**:由于脚本执行...

    PHP错误处理函数register_shutdown_function使用示例

    当程序在线上运行时,如果遇到BUG,想不在前端输出错误信息,同时能及时邮件通知开发者,register_shutdown_function函数就可以派上用场了。 注册一个会在脚本执行完成或者 exit() 后被调用的函数。 可以多次调用 ...

    php register_shutdown_function函数详解

    首先,让我们深入了解一下`register_shutdown_function`的工作原理。该函数接收两个参数:一个是要在程序结束时调用的函数名称(可以是全局函数、类方法或者匿名函数),另一个是可选的参数列表,这些参数将在调用...

    PHP中register_shutdown_function函数的基础介绍与用法详解

    void register_shutdown_function ( callable $callback [, mixed $parameter [, mixed $... ]] ) ``` - `callback`:这是必需的参数,你需要提供一个可调用的函数、方法或者闭包,当脚本中止时会被调用。 - `...

    PHP中使用register_shutdown_function函数截获fatal error示例

    总结来说,register_shutdown_function()提供了一种机制,允许开发者在脚本结束时执行自定义的代码,特别是在遇到致命错误时,能够以更友好和专业的方式向用户反馈错误信息,而不是直接让错误信息暴露给用户。...

    PHP register_shutdown_function()函数的使用示例

    主要介绍了PHP register_shutdown_function()函数的使用示例,当我们的脚本执行完成或者意外死掉导致 php 执行即将关闭时,register_shutdown_function()这个函数会被调用,需要的朋友可以参考下

    php ignore_user_abort与register_shutdown_function 使用方法

    register_shutdown_function('shutdown_function', $arg1, $arg2); ``` 使用`register_shutdown_function`时,需要注意调试可能会比较困难,因为当指定的函数被执行时,你无法看到返回值。 ### 结合使用ignore_...

    test_for_shutdown_and_close

     2.shutdown how=SHUT_WR(关闭写端)可以保证对等方接收到一个EOF字符(FIN段),而不管是否有其他进程已经打开了套接字(shutdown并没采用引用计数)。  而close需要等待套接字引用计数减为0时才发送FIN段。也就是说...

    局域网关机 (关机_重启_注销)wuzuren_localnet_shutdown.rar

    "局域网关机 (关机_重启_注销)wuzuren_localnet_shutdown.rar"这个压缩包文件很可能包含了用于远程控制局域网内计算机进行关机、重启或注销操作的工具或程序。下面我们将详细讨论相关的知识点。 首先,局域网内的...

    1_shutdown.exe

    1_shutdown.exe

    Wise_Auto_Shutdown_v1.6.5.87【定时自动关机工具】

    【明智Wise系列 - 软件名称】Wise_Auto_Shutdown_v1.6.5.87【定时自动关机工具】 — Windows自动关机/重启/休眠工具 — 可以帮助实现电脑定时关机, 重启, 注销, 休眠等多项任务 — 用户除可以设定每天固定某个...

    vbs_script_vbs_shutdown_vbsscript_源码

    标题“vbs_script_vbs_shutdown_vbsscript_源码”揭示了我们即将探讨的知识点是使用VBScript(Visual Basic Script)编写的一种自动关机脚本。VBScript是一种轻量级的、解释型的编程语言,常用于Windows系统中的自动...

Global site tag (gtag.js) - Google Analytics