php中register_shutdown_function函数用法详解: 
由于程序出现一些不可预知的问题,给用户显示一个致命错误,又或者一个空白页(在display_errors设为off的情况下),不是一个很好的处理方法 . PHP中有一个叫做 register_shutdown_function 的函数,可以让我们设置一个当执行关闭时可以被调用的另一个函数.也就是说当我们的脚本执行完成或意外死掉导致PHP执行即将关闭时,我们的这个函数将会 被调用.所以,我们可以使用在脚本开始处设置一个变量为false,然后在脚本末尾将之设置为true的方法,让PHP关闭回调函数检查脚本完成与否. 如果我们的变量仍旧是false,我们就知道脚本的最后一行没有执行,因此它肯定在程序执行到某处死掉了.我准备了一个非常基本的例子,可以演示在一个致 命错误需要显示时,你应该怎么给用户一些合适的反馈.你可以通过关闭致命错误的显示(译注:可以设置display_errors和 error_reporting),让例子看起来好看些. 
<?php 
$clean = false; 
function shutdown_func(){ 
global $clean; 
if (!$clean){ 
die("not a clean shutdown"); 

return false; 

register_shutdown_function("shutdown_func"); 
$a = 1; 
$a = new FooClass(); // 将因为致命错误而失败 
$clean = true; 
?> 
正如你所看到,如果关闭回调函数运行时,clean变量没有被设为 true,shutdown_func函数将会打印出一些东西.这个东西可以包装成一个类(不使用全局变量). 
PHP提供register_shutdown_function()这个函数,能够在脚本终止前回调注册的函数,也就是当 PHP 程序执行完成后执行的函数。 
例子: 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>register_shutdown_function示例</title> 
</head> 
<body> 
<?php 
$starttime=microtime(true); 
function Test(){ 
$starttime=microtime(true); 
if(!file_exists("Test.txt")) { //判断如果文件不存在!! 
$Str = fopen("Test.txt","w+"); 
fwrite($Str," 我是在最后写进来的.时间:$starttime"); 
fclose($Str); 
echo "创建完成!创建时间:$starttime"; 

else { //如果存在; 
echo "文件已经存在"; 


register_shutdown_function("Test"); 
echo "程序开始:".$starttime."<br>"; 
for($i=0;$i<1000;$i++){ 
echo "Echo<br/>"; 

exit; 
?> 
</body> 
</html> 
register_shutdown_function的作用是指定当本页面所有脚本执行完成之后执行的函数。 
<?php 
function aaa() { 
echo "创建文件"; 
if($ttt = fopen("D:/web_root/tx.txt","w+"))   //此处要用绝对路径,用相对路径即无效。原因请看后面的解释 

fwrite($ttt,"you are write after exit"); 
fclose($ttt); 


register_shutdown_function("aaa");   // 函数名称无需带括号,用引号包住即可。 当本页面所有语句都执行完成,或者超时时aa函数。 
exit(); 
?> 
register_shutdown_function 执行机制是:PHP把要调用的函数调入内存。当页面所有PHP语句都执行完成时,再调用此 函数。注意,在这个时候从内存中调用,不是从php页面中调用,所以上面的例子不能使用相对路径,因为php已经当原来的页面不存在了。就没有什么相对路 径可言。 
注意:register_shutdown_function 是指在执行完所有PHP语句后再调用函数,不要理解成客户端关闭流浏览器页面时调用函数。 
可以这样理解调用条件: 
1、当页面被用户强制停止时 
2、当程序代码运行超时时 
3、当PHP代码执行完成时

转载于:https://www.cnblogs.com/H-KWang/p/3474564.html

php函数:register_shutdown_function相关推荐

  1. php。defined,PHP defined()函数的使用图文详解

    PHP defined()函数的使用图文详解 PHP defined() 函数 例子 定义和用法 defined() 函数检查某常量是否存在. 若常量存在,则返回 true,否则返回 false. 语 ...

  2. *【内置】总结持续更新--php常用内置函数

    使用思路:根据功能找函数,如 要做个文件管理器的话,首先确定使用和目录/文件相关的函数,画出来html页面看都有什么功能,再一次分析这些功能的实现 常量 手册中的位置:附录->保留字列表-> ...

  3. PHP的异常捕捉与运行特殊处理

    2019独角兽企业重金招聘Python工程师标准>>> 1.php的错误捕获:try{} catch(Exception  $e) { echo  $e->getMessage ...

  4. 让程序员不再苦逼的四大神器

    2019独角兽企业重金招聘Python工程师标准>>> 做程序猿「媛」是一个苦逼的活,大周六地早起在技术群里招呼,看到没有啥人响应,说了一句,「估计都没有醒」,然后一位哥们抛过来,「 ...

  5. HTTP强制设置状态码

    方法 在最后的程序执行完毕之前,加入下列语句,即可实现所有的返回码都为200 即使在服务器内部发生错误,会报500情况下 只要加上register_shutdown_function函数的处理 同样可 ...

  6. PHP ERROR_PHP 处理错误函数

    错误级别 Fatal Error:致命错误(脚本终止运行)E_ERROR //致命的运行错误,错误无法恢复,暂停执行脚本 E_CORE_ERROR //PHP启动时初始化过程中的致命错误 E_COMP ...

  7. zend studio php 5.5,PHP - 下载 - Zend Studio 5.5

    PHP - 下载 - Zend Studio 5.5 [Zend Studio 5.5 - 网站] http://www.zend.com/products/zend_studio [PHP - 关键 ...

  8. WordPress重要文件wp-seting.php文件详解

    2019独角兽企业重金招聘Python工程师标准>>> wp-setting.php文件详解 描述:用于设置公共变量.加载 WP 的程序和类库(存储 WP 函数.类和核心内容所在文件 ...

  9. PHP - 下载 - PHP 5.2.5

    PHP - 下载 - PHP 5.2.5 [PHP 5.2.5 - 发布说明] http://www.php.net/releases/5_2_5.php [PHP - 关键词] php [PHP - ...

  10. workman的学习总结

    我们知道php主要是用来做web应用的,而且平时使用的都是都是和其他的web服务器来结合使用,比如和apache,nginx和apache的时候,是作为apache的一个动态模块来加载,和nginx的 ...

最新文章

  1. ppt算是php的一种吗,ppt放映快捷键是什么
  2. An error occurred during the file system check
  3. python 编译器重构_Python之父考虑重构Python解释器
  4. 泛函分析3——线性空间和赋范线性空间总结
  5. Linux Centos7安装Oracle12c第二版本
  6. MT6580启动流程
  7. 20180320作业2:进行代码复审训练
  8. 第一个OpenCV读取图像并显示
  9. 授权函php还是提示没权限_大快人心,只需一招,BAT 毒瘤再也不敢滥用权限
  10. Cannot open the disk 'D:\win7-ie8\Windows 7 x64.vmdk' or one of the snapshot
  11. IOS - 单例模式+多线程
  12. 《智能路由器开发指南》——2.6 参考资料
  13. 挑战性题目DSCT102:木板切割问题
  14. 安全bios手册(5)
  15. hp服务器3c认证证书,戴尔 Dell PowerEdge R720 服务器3C认证证书,节能认证证书
  16. java list 内存释放_QList内存释放(看它内部存储的是否是Object,另外还有qDeleteAll)...
  17. wincc7.0显示无法访问服务器,WinCC 7.0 SP3 安装时提示网络连接不可用,无法安装...
  18. pytorch笔记:构建LSTM网络,实现训练验证和测试过程
  19. 中秋节活动中奖名单公布啦!!
  20. 源码时代UI干货分享|Axure基础教程

热门文章

  1. eclipse lombok插件安装_Eclipse-安装Freemarker插件
  2. python如何创建一个类_python (知识点:类)简单的创建一个类
  3. python正确的变量名称_Python基础之变量的命名
  4. linux firefox xvfb,自动化测试之linux+xvfb+selenium+firefox+python测试环境搭建与测试
  5. python内置方法就是内置函数_python内置函数
  6. python基础知识整理 第三节 :函数
  7. Python Qt GUI设计:信号与槽的使用方法(基础篇—7)
  8. R19436221 区间第k小 主席树
  9. POJ - 3160 Father Christmas flymouse tanjar缩点构图+dfs
  10. python绝对路径的区别_python学习:绝对路径和相对路径