Что ж, одним из вариантов было бы указать условие тайм-аута в MySQLi и использовать MySQLi :: real_connect ... Таким образом, если время истекает раньше, вы можете предположить, что оно не работает ... Вот пример с таймаутом в 1 секунду:
$mysqli = mysqli_init();
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 1);
if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) {
// Connection timed out (most likely), so assume load too high
}
Другой вариант - использовать такой инструмент, как Nagios для мониторинга рассматриваемых серверов. Затем напишите небольшой фрагмент кода, чтобы проверить состояние из Nagios, прежде чем пытаться подключиться (это так же просто, как чтение файла журнала).
Если вы действительно обеспокоены такими вещами, как эффект /.
, вы можете сохранить копию сайта в чистом HTML, а затем переключиться на нее, если сайт замедлится достаточно (напишите задание cron, чтобы проверить нагрузка на сервер, и если он слишком высокий, переключитесь на него, и если он упадет, переключитесь обратно).
Но я должен спросить, почему вы хотите это сделать? Почему бы просто не позволить PHP потерпеть неудачу изящно? Лучше исправить проблемы с загрузкой, чем писать весь этот код (который увеличит саму нагрузку), чтобы попытаться обнаружить его. Исправьте медленные и неэффективные части, и вам не придется беспокоиться обо всем этом ...