热烈祝贺台州维博网络的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » PHP/Perl编程 » PHP之register_shutdown_function方法

PHP之register_shutdown_function方法

论坛链接
  • PHP之register_shutdown_function方法
  • 发布时间:2012-08-13 16:27:25    浏览数:4335    发布者:superadmin    设置字体【   
register_shutdown_function 执行机制是:PHP把要调用的函数调入内存。当页面所有PHP语句都执行完成时,再调用此 函数。注意,在这个时候从内存中调用,不是从PHP页面中调用,所以上面的例子不能使用相对路径,因为PHP已经当原来的页面不存在了。就没有什么相对路 径可言。

注意:register_shutdown_function 是指在执行完所有PHP语句后再调用函数,不要理解成客户端关闭流浏览器页面时调用函数。
可以这样理解调用条件:
1、当页面被用户强制停止时

2、当程序代码运行超时时

3、当PHP代码执行完成时

调用:

1、 register_shutdown_function(array(&$this, 'close_session'));

当前对象的引用:&$this, 回调函数:当前对象的方法。

2、register_shutdown_function(“callback”);

回调函数:callback。

*************************************************************************************************************************


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 程序执行完成后执行的函数。

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 );
www . phperz . com
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>” ; phperz ~ com

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代码执行完成时
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理