2012-06-02 3 views
0

Я создаю информационный бюллетень CMS, и я хочу пропустить любые ошибки в базе данных с информацией, такой как timestamp, error, userID и информация о функции. Каков наилучший способ сделать это?Лучший способ создания базы данных php-ошибок с использованием mysql?

Я думаю, что я должен построить класс, который обрабатывает ошибки и вводит их в таблицу MYsql с использованием PDO.

псевдо-код:

class sbmtErr 
{ 
    private $errStrng; 

    protected function sndErr($err, $usrData, $mthd){ 

     $sndErrPDO = new myPDO; 

     $this->errStrng = "INSERT INTO errTbl (error, userID, method) VALUES ('".$err."', ".usrData['usrID'].", '".$mthd."')"; 

     $sndErrPDO->sqlQry($errStrng); 
    } 
} 

Моя проблема вот я не знаю, как изолировать метод, который бросил ошибку.

Есть ли лучший способ сделать это?

Спасибо.

+4

Где вы регистрируете ошибку, если что-то с базой данных не удается? ;) – Gumbo

+1

Посмотрите на ['set_error_handler()'] (http://php.net/manual/en/function.set-error-handler.php) и ['set_exception_handler()'] (http: // php.net/manual/en/function.set-exception-handler.php) – clentfort

+2

У меня нет людей, использующих эти имена! SubmitError, $ errorString, $ sendErrorPDO. Почему глупые сокращения? –

ответ

1

Расширить класс исключений. CMSErrorException, когда выбрасывается (т. Е. На конструкцию), используйте отражение, чтобы узнать, что такое функция, номер строки и т. Д., Как вы находите, что идентификатор пользователя зависит от того, как вы его сохраняете.

Затем, независимо от того, что вы делаете, когда вы его поймаете, вы вызываете метод (снова из конструкции), который регистрирует его в базе данных.

Осторожно не бросать эти пользовательские исключения внутри кода исключения, поскольку это может привести к бесконечному циклу в случае ошибки базы данных.

+0

Сладкий, я пробую это сегодня вечером. – wdbphoto

Смежные вопросы