php register_shutdown_function响应error 配合error_get_last 捕获错误
时间:2022-07-28
本文章向大家介绍php register_shutdown_function响应error 配合error_get_last 捕获错误,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
register_shutdown_function 函数,当我们的脚本执行完成或意外死掉导致PHP执行即将关闭时,我们的这个函数将会 被调用,可以配合 error_get_last 使用,代码如下,注释已经解释了代码了: error_get_last 稍后解释
<?php
//a bool变量
$a = false;
//一个函数,用来响应 register_shutdown_function
function shutdown_f(){
global $a; //获取到a变量
echo 'ok <br/>'; //输出一下,表示正常执行完也响应
if (!$a){ //判断a变量是否ok,如果为flase那就说明没改变说明,意外中断,因为最后一行改a为true了
$e = error_get_last(); //使用 error_get_last 能捕获错误,等下说明
print_r($e); //可以输出看一下捕获的error信息
die("error!error!error!"); //提示error表示意外中断,出现错误
}
return false;
}
register_shutdown_function("shutdown_f");//如果出现错误则执行 shutdown_f 触发器一样的存在
$b = new aa(); // 错误的代码
$a = true; //改为true表示执行完毕
以上出错的时候,会显示如下结果:
我们输出的数组是我们使用 error_get_last 函数捕获的信息。 其中: 关联数组包含四个键: [type] - 描述错误类型 [message] - 描述错误消息 [file] - 描述发生错误的文件 [line] - 描述发生错误的行号
error_get_last 就是用来返回最后发生的错误。
其中不同的type值表示不同的错误,注释的数值为type值,例如: E_ERROR://1 E_PARSE://4 E_CORE_ERROR://16 E_COMPILE_ERROR://64 E_USER_ERROR: //256
好了,我们还发现了我们输出了error!error!error!。这就是使用了register_shutdown_function响应了我们的shutdown_f函数。
如果我们注释掉这一行代码:
$b = new aa();
将会不会出错,但是 register_shutdown_function 即使正常执行完也会执行对应的函数shutdown_f。所以注释后我们还会发现我们会输出 ok
- Flash/Flex学习笔记(32):播放音乐并同步显示lyc歌词(适用于Silverlight)
- Flash/Flex学习笔记(31):对象拖拽与投掷
- 如何评价张小龙在2016微信公开课的演讲
- VS2010如何做WAP开发
- (原创)详解KMP算法
- Flash/Flex学习笔记(30):不用startDrag和stopDrag的对象拖动
- JS代码和网页的混用
- Flash/Flex学习笔记(29):MovieClip帧/时间轴的控制
- Oracle日常运维操作总结-数据库的启动和关闭
- Python中Json解析的坑
- Flash/Flex学习笔记(28):动态文本的滚动控制
- CentOS7下Elasticsearch集群部署记录
- Flash/Flex学习笔记(27):摄像头/麦克风的视频/音量指示器
- Flash/Flex学习笔记(26):AS3自定义右键菜单
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- P1468 派对灯 Party Lamps(BIG 模拟)
- 【JVM系统学习之路系列】 JVM 概述篇
- P1518 两只塔姆沃斯牛 The Tamworth Two(简单的搜索题)
- P1466 集合 Subset Sums 搜索+递推+背包三种做法
- P1465 序言页码 Preface Numbering (手推)
- P1460 健康的荷斯坦奶牛 Healthy Holsteins (简单的dfs)
- P1459 三值的排序 Sorting a Three-Valued
- P1457 城堡 The Castle 位运算+BFS+思维(难题,好题)
- PostgreSQL异常宕机重启时间超长
- C++ 重载运算符 继承 多态 (超详细)
- USACO 2.1 海明码 Hamming Codes (模拟+位运算+黑科技__builtin_popcount(n))
- POJ 3267为什么优先队列超时,DP就能过,难过
- 执行ALTER TABLE语句时如何避免长时间阻塞并发查询
- P1458 顺序的分数 Ordered Fractions(有技巧的枚举)+C++类封装=精简代码
- Codeforce 140C (贪心+优先队列)补题