Я полагаю, что, наконец, мне удалось получить то, что вы имеете в виду под «сбой».
Кажется, что ваша структура кода - это спагетти, где HTML смешивается с материалом базы данных и т. Д. Ошибка показывает неполный, вырванный дизайн.
Чтобы предотвратить это, вам необходимо правильно структурировать ваше приложение PHP.
Прежде всего, никогда не выводите один байт, если не все операции с базой данных не завершены. Чтобы сделать это, разделите страницу PHP на две части: одна для взаимодействия с базой данных, которая будет собирать все данные, необходимые для отображения; а другая часть состоит из HTML в основном, который используется для отображения данных.
После этого вы сможете показать страницу с особыми ошибками, если на этапе базы данных возникла ошибка.
Имейте в виду, что улавливание каждой возможной ошибки является либо очень неэффективным, и в то же время невозможным: вы просто не можете предвидеть и обрабатывать каждую ошибку, которая может произойти.
Вместо этого просто создайте простой код, который покажет общую страницу с ошибкой в случае какой-либо ошибки. Для этого, установка обработчика ошибок, как это (код взят из моей статьи The (im)proper use of try..catch):
set_error_handler("myErrorHandler");
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
error_log("$errstr in $errfile:$errline");
header('HTTP/1.1 500 Internal Server Error', TRUE, 500);
echo "Server error. Please try again later");
exit;
}
Просто установите тайм-аут для MySQLi http://php.net/manual/en/mysqli.options.php опции 'MYSQLI_OPT_CONNECT_TIMEOUT' – nospor
Что вы хотите сделать, если база данных не доступна? Я имею в виду по-настоящему, а не что насмешливый «мир привет»? –
как этот «простой die()» отличается от того, что «сбой» вы хотите избавиться? –