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分页函数
Jul 08 PHP
我的论坛源代码(四)
Oct 09 PHP
第十五节--Zend引擎的发展
Nov 16 PHP
php set_time_limit(0) 设置程序执行时间的函数
May 26 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
Nov 27 PHP
PHP 数组和字符串互相转换实现方法
Mar 26 PHP
PHP学习笔记之字符串编码的转换和判断
May 22 PHP
PHP的Socket通信之UDP通信实例
Jul 02 PHP
php抽象类用法实例分析
Jul 07 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 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/10/09 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
开源php中文分词系统SCWS安装和使用实例
2014/04/11 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
用javascript实现自定义标签
2007/05/08 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
JS实现自动定时切换的简洁网页选项卡效果
2015/10/13 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
关于element的表单组件整理笔记
2021/02/05 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python单元测试框架unittest简明使用实例
2015/04/13 Python
python生成式的send()方法(详解)
2017/05/08 Python
Python程序退出方式小结
2017/12/09 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
python实现粒子群算法
2020/10/15 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
根叔历年演讲稿
2014/05/20 职场文书
大学生简历求职信
2014/06/24 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL