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 相关文章推荐
PHP5/ZendEngine2的改进
Oct 09 PHP
两个强悍的php 图像处理类1
Jun 15 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
Jan 10 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
thinkphp中session和cookie无效的解决方法
Dec 19 PHP
php简单获取复选框值的方法
May 11 PHP
PHP发送AT指令实例代码
May 26 PHP
php pdo操作数据库示例
Mar 10 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
php微信扫码支付 php公众号支付
Mar 24 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 MySQL与分页效率
2008/06/04 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
PHP递归创建多级目录
2015/11/05 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
python基础教程之类class定义使用方法
2014/02/20 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
python psutil模块使用方法解析
2019/08/01 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
骨干教师培训制度
2014/01/13 职场文书
秋季运动会表扬稿
2014/01/16 职场文书
法人代表授权委托书
2014/04/08 职场文书
房屋所有权证明
2014/10/20 职场文书
财务人员个人工作总结
2015/02/27 职场文书
西安事变观后感
2015/06/12 职场文书
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL
springboot用户数据修改的详细实现
2022/04/06 Java/Android
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL