• 技术文章 >后端开发 >php教程

    PHP register_shutdown_function函数的解析

    不言不言2018-04-09 16:13:53原创625
    本篇文章是对PHP register_shutdown_function函数进行了分析介绍,需要的朋友参考下

    脚本时常死掉,而且并不总是那么好看. 我们可不想给用户显示一个致命错误,又或者一个空白页(在display_errors设为off的情况下) . PHP中有一个叫做 register_shutdown_function 的函数,可以让我们设置一个当执行关闭时可以被调用的另一个函数.也就是说当我们的脚本执行完成或意外死掉导致PHP执行即将关闭时,我们的这个函数将会 被调用.所以,我们可以使用在脚本开始处设置一个变量为false,然后在脚本末尾将之设置为true的方法,让PHP关闭回调函数检查脚本完成与否. 如果我们的变量仍旧是false,我们就知道脚本的最后一行没有执行,因此它肯定在程序执行到某处死掉了.我准备了一个非常基本的例子,可以演示在一个致 命错误需要显示时,你应该怎么给用户一些合适的反馈.你可以通过关闭致命错误的显示(译注:可以设置display_errors和 error_reporting),让例子看起来好看些.

    复制代码 代码如下:


    <?php
    $clean = false;
    function shutdown_func(){
    global $clean;
    if (!$clean){
    die("not a clean shutdown");
    }
    return false;
    }
    register_shutdown_function("shutdown_func");
    $a = 1;
    $a = new FooClass(); // 将因为致命错误而失败
    $clean = true;
    ?>


    正如你所看到,如果关闭回调函数运行时,clean变量没有被设为true,shutdown_func函数将会打印出一些东西.这个东西可以包装成一个类(不使用全局变量).
    PHP提供register_shutdown_function()这个函数,能够在脚本终止前回调注册的函数,也就是当 PHP 程序执行完成后执行的函数。
    register_shutdown_function 执行机制是:PHP把要调用的函数调入内存。当页面所有PHP语句都执行完成时,再调用此 函数。注意,在这个时候从内存中调用,不是从PHP页面中调用,所以上面的例子不能使用相对路径,因为PHP已经当原来的页面不存在了。就没有什么相对路 径可言。
    注意:register_shutdown_function 是指在执行完所有PHP语句后再调用函数,不要理解成客户端关闭流浏览器页面时调用函数。
    可以这样理解调用条件:
    1、当页面被用户强制停止时
    2、当程序代码运行超时时
    3、当PHP代码执行完成时,代码执行存在异常和错误、警告
    相关推荐:

    PHP函数静态变量的使用方法

    以上就是PHP register_shutdown_function函数的解析的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:register function shutdown
    上一篇:php设计模式一之命名空间、自动加载类、PSR-0编码规范 下一篇:解说PHP的输入输出流
    大前端线上培训班

    相关文章推荐

    • PHP中的命名空间定义与使用(实例详解)• PHP中clone关键字和__clone()方法的使用(实例详解)• 带你分清类中的构造函数与析构函数• 五分钟带你了解PHP中的魔术方法(实例详解)• 怎样去搞定PHP类的继承?(总结分享)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网