PHP register_shutdown_function()函数的使用示例


Posted in PHP onJune 23, 2015

通过 register_shutdown_function 方法,可以让我们设置一个当执行关闭时可以被调用的另一个函数。

也就是说,当我们的脚本执行完成或者意外死掉导致 php 执行即将关闭时,我们的这个函数会被调用。

【使用场景】

① 页面被(用户)强制停止

② 程序代码意外终止或超时

③ php4 中没有析构函数,可以使用该函数模拟析构函数

shutdown.php

<?php
header("content-type:text/html;charset=utf-8");
class Shutdown{
  public function endScript(){
    if(error_get_last()){
      echo '<pre>';
      print_r(error_get_last());
      echo '</pre>';
    }
    file_put_contents('D:\practise\php\Error\error.txt', 'this is a test');
    die('脚本结束');
  } 
}

register_shutdown_function(array(new Shutdown(), 'endScript'));

//错误测试
echo md6();

执行,输出:

( ! ) Fatal error: Call to undefined function md6() in D:\practise\php\Error\shutdown.php on line 18
 Array

(

    [type] => 1

    [message] => Call to undefined function md6()

    [file] => D:\practise\php\Error\shutdown.php

    [line] => 18

)

脚本结束
D:\practise\php\Error\error.txt:

this is a test

注意:register_shutdown_function 方法是从内存中调用的,因此在使用 file_put_contents 方法时,第一个参数一定要使用绝对路径。

PHP 相关文章推荐
用PHP读取IMAP邮件
Oct 09 PHP
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
Feb 16 PHP
web目录下不应该存在多余的程序(安全考虑)
May 09 PHP
关于PHP结束标签的使用细节探讨及联想
Mar 04 PHP
php过滤XSS攻击的函数
Nov 12 PHP
php实现图片文件与下载文件防盗链的方法
Nov 03 PHP
php实现两个数组相加的方法
Feb 17 PHP
PHP中foreach()用法汇总
Jul 02 PHP
必须收藏的23个php实用代码片段
Feb 02 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 28 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
Jun 23 #PHP
PHP中把错误日志保存在系统日志中(Windows系统)
Jun 23 #PHP
PHP中通过trigger_error触发PHP错误示例
Jun 23 #PHP
PHP实现链式操作的核心思想
Jun 23 #PHP
PHP魔术方法的使用示例
Jun 23 #PHP
8个PHP数组面试题
Jun 23 #PHP
php中 ob_start等函数截取标准输出的方法
Jun 22 #PHP
You might like
PHP中for循环语句的几种变型
2007/03/16 PHP
php简单分页类实现方法
2015/02/26 PHP
PHP模块化安装教程
2016/06/01 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
动手学习无线电
2021/03/10 无线电
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python ZipFile模块详解
2013/11/01 Python
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
处理textarea中的换行和空格
2019/12/12 HTML / CSS
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
乡镇综治宣传月活动总结
2014/07/02 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
叶问观后感
2015/06/15 职场文书