PHPregister_shutdown_function函数详解_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHPregister_shutdown_function函数详解_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2400字,纯文字阅读大概需要4分钟。
内容图文
![PHPregister_shutdown_function函数详解_PHP教程](/upload/InfoBanner/zyjiaocheng/176/5a2bcf50beaa4c508329ad37b0e99849.jpg)
PHP中有一个叫做register_shutdown_function 的函数,可以让我们设置一个当执行关闭时可以被调用的另一个函数.也就是说当我们的脚本执行完成或意外死掉导致PHP执行即将关闭时,我们的这个函数将会 被调用.所以,我们可以使用在脚本开始处设置一个变量为false,然后在脚本末尾将之设置为true的方法,让PHP关闭回调函数检查脚本完成与否.
如果我们的变量仍旧是false,我们就知道脚本的最后一行没有执行,因此它肯定在程序执行到某处死掉了.我准备了一个非常基本的例子,可以演示在一个致 命错误需要显示时,你应该怎么给用户一些合适的反馈.你可以通过关闭致命错误的显示(译注:可以设置display_errors和error_reporting),让例子看起来好看些.
$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 程序执行完成后执行的函数。
php程序员站
例子:
"; } exit; ?>
register_shutdown_function的作用是指定当本页面所有脚本执行完成之后执行的函数。
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代码执行完成时
摘自 天天笑一下
http://www.bkjia.com/PHPjc/478332.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/478332.htmlTechArticle脚本时常死掉,而且并不总是那么好看. 我们可不想给用户显示一个致命错误,又或者一个空白页(在display_errors设为off的情况下) . PHP中有一个...
内容总结
以上是互联网集市为您收集整理的PHPregister_shutdown_function函数详解_PHP教程全部内容,希望文章能够帮你解决PHPregister_shutdown_function函数详解_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。