Возможная внезапная ошибка MySQL

#php #mysql #mysqli #database-connection

#php #mysql #mysqli #подключение к базе данных

Вопрос:

Привет, друзья из SO!

Хорошо, на этот раз у меня немного более сложная проблема. У нас запущен веб-сканер, который нормально функционирует большую часть дня и времени.

Однако время от времени это просто останавливается: ссылка, которая должна быть проанализирована следующей, никогда не меняет своего состояния (с ожидающего на сканирование), и, конечно, это останавливает весь цикл.

Мы регистрируем все ошибки PHP с помощью:

 //errores producción
@ini_set('error_reporting', -1);
@ini_set('log_errors','On');
@ini_set('display_errors','Off');
@ini_set('error_log','/var/www/vhosts/xxx.com/xxx.com/xxx');
  

Нет никаких доказательств того, что что-либо могло вызвать описанную проблему. 0 аномалий.

Следовательно, я полагаю, что проблема может быть связана с какими-то проблемами MySQL?

Каждый выполняемый нами запрос MySQL выполняется с использованием MySQLi с помощью пользовательских функций, поэтому мой вопрос здесь:


Существует ли какой-либо простой подход для записи каждой отдельной ошибки MySQL в тот же файл, где мы храним ошибки PHP?


Вот некоторые из функций, используемых для запроса к MySQL:

 Function db_ob($db_link, $ask) {
$feedback = mysqli_fetch_object(mysqli_query($db_link, $ask));
return $feedback;
}
  

и:

 Function db_ob_all($db_link, $ask) {
$feedback = mysqli_query($db_link, $ask);
while ($row = mysqli_fetch_object($feedback)) { $value[] = $row; }
return $value;
}
  

Итак, что я ищу, это решение в одну или две строки, которое я мог бы добавить в эти функции, чтобы хранить и отслеживать любую проблему или ошибку в том же файле, где я в настоящее время сохраняю ошибки PHP.

Заранее спасибо! Крис;

Ответ №1:

Решена:

1) создайте функцию для отслеживания ошибок в PHP error_log:

 Function informar_error_db($db_link) {
error_log("Dreadful SQL error: ". mysqli_error($db_link)." in ".$_SERVER["SCRIPT_FILENAME"]);
}
  

2) Если есть проблемы с MySQLi, сохраните их:

 Function db_ask($db_link, $ask) {
$feedback = mysqli_query($db_link, $ask);
if (mysqli_error($db_link)) { informar_error_db($db_link); }
return $feedback;
}
  

Здесь:
если (mysqli_error($db_link)) { informar_error_db($db_link); }