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 相关文章推荐
PHP4实际应用经验篇(6)
Oct 09 PHP
我的群发邮件程序
Oct 09 PHP
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 PHP
Ping服务的php实现方法,让网站快速被收录
Feb 04 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
Feb 05 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
php给每个段落添加空格的方法
Mar 20 PHP
PHP中foreach()用法汇总
Jul 02 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
Dec 07 PHP
PHP面向对象之里氏替换原则简单示例
Apr 08 PHP
PHP日志LOG类定义与用法示例
Sep 06 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
php 可变函数使用小结
2018/06/12 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
javascript生成大小写字母
2015/07/03 Javascript
js实现上传文件添加和删除文件选择框
2016/10/24 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
Python判断字符串与大小写转换
2015/06/08 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
python字典操作实例详解
2017/11/16 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
HTML5学习笔记之History API
2015/02/26 HTML / CSS
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
歌唱比赛获奖感言
2014/01/21 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
单位作风建设自查报告
2014/10/23 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
教师节倡议书2015
2015/04/27 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL
Python如何让字典保持有序排列
2022/04/29 Python
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python