我使用了一個將錯誤轉換爲PHP 5中的異常的類,它將錯誤記錄到文件中和/或通過電子郵件發送給指定的帳戶。有一個更好的方法嗎?有一些關於我知道會更好。我正在使用set_error_handler。PHP中全局錯誤處理的最佳實踐?
set_error_handler("exception_error_handler");
我的代碼做什麼它應該的,因爲它記錄和電子郵件錯誤,但我在做的過程中,最好的方式。將它記錄到數據庫會更好 - 假設數據連接將出現錯誤。什麼是網站的行業標準?
我使用了一個將錯誤轉換爲PHP 5中的異常的類,它將錯誤記錄到文件中和/或通過電子郵件發送給指定的帳戶。有一個更好的方法嗎?有一些關於我知道會更好。我正在使用set_error_handler。PHP中全局錯誤處理的最佳實踐?
set_error_handler("exception_error_handler");
我的代碼做什麼它應該的,因爲它記錄和電子郵件錯誤,但我在做的過程中,最好的方式。將它記錄到數據庫會更好 - 假設數據連接將出現錯誤。什麼是網站的行業標準?
您處理錯誤的代碼必須絕對防不勝防。
有時候會因爲你忘了測試的一個非常模糊的理由而被踢出去,但是當你的代碼版本的世界末日苦苦掙扎時,你仍然希望它能夠運行。
將其輸出寫入數據庫會爲您的代碼創建一個巨大的依賴關係 - 而數據庫的缺失很可能是導致報告問題的主要原因。
依賴郵件仍然是一個依賴項,但是在發生中斷時最直接的目標應該是讓系統再次工作 - 所以發送電子郵件是一種非常有效的方式,提醒您需要修復某些內容。
PHP的文件處理工具不適合併發訪問 - 所以雖然我建議在本地記錄任何事件,但不要從代碼中寫入文件 - 使用syslog接口。通過一切手段發送一封電子郵件,其中後你已經發送到系統日誌。
HTH
C.
我不會將該邏輯轉儲到錯誤處理程序中。
看看這個方法從Kohana。
/**
* PHP error handler, converts all errors into ErrorExceptions. This handler
* respects error_reporting settings.
*
* @throws ErrorException
* @return TRUE
*/
public static function error_handler($code, $error, $file = NULL, $line = NULL)
{
if (error_reporting() & $code)
{
// This error is not suppressed by current error reporting settings
// Convert the error into an ErrorException
throw new ErrorException($error, $code, 0, $file, $line);
}
// Do not execute the PHP error handler
return TRUE;
}
清潔,並做的方法描述。您現在可以將您的處理移入異常處理程序或在catch塊中。
嗯,當他有一個代碼示例時,我回答了這個問題,但現在它消失了,所以如果我的回答沒有任何意義,我表示歉意。 – 2010-02-16 21:46:45
refactormycode.com – 2010-02-16 21:40:33
你需要用'set_error_handler'設置你的錯誤處理程序。否則,你的問題是什麼?你的代碼沒有做什麼,你想要它做什麼?更加詳細一些。 – meagar 2010-02-16 21:42:18