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 相关文章推荐
第八节 访问方式 [8]
Oct 09 PHP
PHP memcache扩展的三种安装方法
Apr 26 PHP
php include加载文件两种方式效率比较
Aug 08 PHP
PHP empty函数报错解决办法
Mar 06 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
php+ajax实现的点击浏览量加1
Apr 16 PHP
PHP文件与目录操作示例
Dec 24 PHP
php生出随机字符串
Jul 06 PHP
PHP封装的非对称加密RSA算法示例
May 28 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
php+laravel 扫码二维码签到功能
May 15 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
URL Rewrite的设置方法
2007/01/02 PHP
PHP令牌 Token改进版
2008/07/18 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
php实现文章评论系统
2019/02/18 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
Python线程的两种编程方式
2015/04/14 Python
Python批量按比例缩小图片脚本分享
2015/05/21 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
python dumps和loads区别详解
2020/02/04 Python
在python中修改.properties文件的操作
2020/04/08 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
关于python中导入文件到list的问题
2020/10/31 Python
教师年终个人自我评价
2013/10/04 职场文书
单位实习证明怎么写
2014/01/17 职场文书
志愿者服务感言
2014/02/27 职场文书
经理秘书求职自荐信范文
2014/03/23 职场文书
教师节活动总结
2014/08/29 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
2015年度对口支援工作总结
2015/07/22 职场文书
法院执行局工作总结
2015/08/11 职场文书
Python实现视频自动打码的示例代码
2022/04/08 Python
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers