熱烈祝賀臺州維博網絡的站長論壇隆重上線!(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    瀏覽數:4263    發布者: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’ );    // 函數名稱無需帶括號,用引號包住即可!‘敱卷撁嫠姓Z句都執行完成,或者超時時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 事務處理
陕西快乐10分玩法 广东11选5前3直选技巧 广西快3遗漏 看贵州快三开奖结果走势图 陕西体彩十一选五推荐号码 体彩七星彩开奖结果 贵州快3走走势图表 七星彩直播开奖现场视 亓和彩一肖公式 心水一点必中特第20期 股票配资平台哪个好