2014-11-09 3 views
1

Я использую PDO с try и catch, поэтому я могу поймать ошибку в пользовательской функции. Я хочу знать, является ли этот метод приемлемым.PDO Error Handling, это нормально?

Попробовать и загвоздка:

Try 
{ 

... 

} catch (Exception $e) { 
    // Proccess error 
    $msg = $e->getMessage(); 
    $timestamp = date("Y-m-d H:i:s"); 
    $line = $e->getLine(); 
    $code = $e->getCode(); 

    handle_error($msg, $timestamp, $line, $code); 
    die("oops! It's look like we got an error here! Try Again!"); 
} 

Функция обработки ошибок:

function handle_error($msg, $timestamp, $line, $code) { 

    $file = 'errorlog.txt'; 
    $data = "$timestamp // Error Message: $msg | Error Code: $code | Error Line: $line \n"; 
    file_put_contents($file, $data, FILE_APPEND); 

    return; 
} 

Благодаря

+1

Что вы имеете в виду, если это нормально? То, как я это вижу, зависит от вас, как вы хотите обрабатывать свои ошибки. – MinusFour

+0

Если он работает, он удовлетворяет вашим намерениям и передает все требования кодового дизайна - все в порядке. Если нет - это не нормально. – zerkms

+0

Я имею в виду, это достаточно безопасно? это достойная обработка ошибок для реального сайта или мне нужно сделать что-то еще? – holyknight

ответ

0

Единственное, что я мог думать о том, что может не так, что если по какой-то причине пользователь узнает способ инициировать ошибки PDO, тогда он может в основном DDoS системы по t сбрасывая его снова и снова и заполняя ваш жесткий диск той же ошибкой. Не говоря уже о том, что он может использовать всю пропускную способность ввода-вывода на диске (при ее использовании).

С другой стороны, Apache выполняет аналогичное ведение журнала, и я не слышал о заполнении жестких дисков даже при атаках DDoS.

+0

Затем, как я должен обрабатывать эти ошибки? – holyknight

+0

Нет, я действительно забираю это обратно. Apache делает о том же протоколировании, и вы фактически не заполняете все жесткие диски даже под DDoS. Ведение журнала, что многое не должно быть проблемой. – MinusFour

+0

Приятно, я буду ждать комментариев. – holyknight

0

Вы могли бы упростить написание журнала, изменив свой код, похожий на этот

catch (PDOException $e) { 
$my_error = "Failed;" . $e; 
error_log(print_r($my_error,TRUE)); 
} 
Смежные вопросы