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 相关文章推荐
网站当前的在线人数
Oct 09 PHP
PHP中动态HTML的输出技术
Oct 09 PHP
php将时间差转换为字符串提示
Sep 07 PHP
三个类概括PHP的五种设计模式
Sep 05 PHP
基于PHP输出缓存(output_buffering)的深入理解
Jun 13 PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
PHP实现采集中国天气网未来7天天气
Oct 15 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
php session的应用详细介绍
Mar 22 PHP
PHP中str_split()函数的用法讲解
Apr 11 PHP
laravel框架的安装与路由实例分析
Oct 11 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
第十四节--命名空间
2006/11/16 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
php+ajax导入大数据时产生的问题处理
2014/06/11 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
php session 写入数据库
2016/02/13 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
一个基于flask的web应用诞生(1)
2017/04/11 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
电力培训心得体会
2014/09/02 职场文书
投标邀请书范本
2015/02/02 职场文书
董事长助理岗位职责
2015/02/11 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
聊一聊python常用的编程模块
2021/05/14 Python
Python语言中的数据类型-序列
2022/02/24 Python
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android