fatal error:php中通過register

來源:互聯網
上載者:User

今天發現php中,如果要記錄fatal error的時候,可以實用一個不錯的函數,
叫register_shutdown_function,小結如下:
  register_shutdown_function可以讓我們設定一個當執行關閉時可以被調用的另一個函數.也就是說當我們的指令碼執行完成或意外死掉 導致PHP執行即將關閉時,我們的這個函數將會被調用.所以,我們可以使用在指令碼開始處設定一個變數為false,然後在指令碼末尾將之設定為true的方 法,讓PHP關閉回呼函數檢查指令碼完成與否. 如果我們的變數仍舊是false,我們就知道指令碼的最後一行沒有執行,因此它肯定在程式執行到某處死掉了;
   例子如下:
 

 
  1. ?php 
  2. $clean = false; 
  3. function shutdown_func(){ 
  4. global $clean; 
  5. if (!$clean){ 
  6. die("not a clean shutdown"); 
  7. return false; 
  8. register_shutdown_function("shutdown_func"); 
  9. $a = 1; 
  10. $a = new FooClass(); // 將因為致命錯誤而失敗 
  11. $clean = true; 
  12. ?> 
  13. 再來一個記錄fatal error的例子 
  14. function catch_fatal_error() 
  15. $last_error = error_get_last(); 
  16. // 檢查是否屬於fatal_error 
  17. if(isset($last_error['type']) &&$last_error['type']==E_ERROR) 
  18. //相關的處理 
  19. register_shutdown_function('catch_fatal_error'); 


  注意的是;
1,register_shutdown_function()函數可重複調用,但執行的順序與註冊的順序相同
2,如果在調用register_shutdown_function()函數之前有exit()函數調用,register_shutdown_function()函數將不能執行
3,PHP4後支援註冊函數參數傳遞
4,在某些服務端,如Apache,目前的目錄在register_shutdown_function()函數中能夠改變
5,register_shutdown_function()函數執行在headers發送之後

本文連結http://www.cxybl.com/html/wlbc/Php/20130318/37221.html

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。