生產環境難免遇到未預期的 MySQL 錯誤,需自動記錄錯誤時間、客戶端 IP、錯誤訊息、發生檔案、用戶帳號等資訊,利於事後分析。
class MySQL_ErrorLogger {
// 建立錯誤日誌
function logError() {
$fp = @fopen("error.dat", "a+");
$time = date("Y-m-d H:i:s");
$msg = "{VisitedTime:$time}\t" .
"{VisiterIP:{$_SERVER['REMOTE_ADDR']}}\t" .
"{Errormsg:" . mysql_error() . "}\t" .
"{File:->{$_SERVER['PHP_SELF']}}\t" .
"{User:{$_SESSION['user']}}\r\n";
@fputs($fp, $msg);
@fclose($fp);
}
}
在每個使用 MySQL 連線的頁面尾部或錯誤處理處加入:
if (mysql_error()) {
$logger = new MySQL_ErrorLogger();
$logger->logError();
}
{VisitedTime:2002-05-09 14:43:56}
{VisiterIP:127.0.0.1}
{Errormsg:Duplicate entry '0' for key 1}
{File:->/path/path/errorfilename.php}
{User:sports98}
include 檔案中不要加 __LINE__ (行號無意義)require 檔案中建議加入 __LINE__ 快速定位錯誤行0600,放置非公開目錄