Intereting Posts
Сообщение о проверке модели торта hp не отображается в HTML-форме Проверьте, нет ли электронной почты в базе данных с помощью подготовленных инструкций Доступ к большим массивам в PHP Поместите URL-адреса из строки в массив с помощью regex (проблема с периодом ожидания) Какова цель PHP, имеющего символ (знак доллара) перед каждой переменной? Как изменить конфигурацию почты перед отправкой почты в контроллере с помощью Laravel? Проводка массива на PHP с использованием ajax Прочтите файл CVS и выпустите файл CSV в файл .txt. делать расширенные классы наследуют статические значения var (PHP)? Прекратите использование `global` в PHP Laravel Eager Loading – Загрузка только определенных столбцов Цикл Foreach с несколькими массивами Как мы можем сделать следующее утверждение в темах Controller с paginate? eval () в laravel не выполняет строку Нужен ли вам перерыв при использовании возврата?

Должен ли я пинговать сервер mysql перед каждым запросом?

Поэтому мне было интересно, следует ли мне или не нужно пинговать сервер mysql (mysqli_ping), чтобы убедиться, что сервер всегда жив до запуска запроса?

Solutions Collecting From Web of "Должен ли я пинговать сервер mysql перед каждым запросом?"

Вы не должны пинговать MySQL перед запросом по трем причинам:

  1. Его надежный способ проверки сервера не срабатывает, когда вы пытаетесь выполнить запрос, он может очень быстро снизиться за время между ответом на запрос и запросом.
  2. Ваш запрос может завершиться неудачно, даже если сервер завершен.
  3. По мере увеличения объема трафика на ваш сайт, вы добавите много дополнительных накладных расходов в базу данных. Это не редкость в корпоративных приложениях, которые использовали этот метод, чтобы увидеть огромное количество ресурсов базы данных, теряемых впустую на пингах.

Лучшим способом борьбы с подключениями к базе данных является обработка ошибок (try / catch), повторные попытки и транзакции.

Подробнее об этом в блоге производительности MySQL: проверка подключения к реальной базе данных считается вредной

В этом сообщении в блоге вы увидите, что 73% загрузки этого экземпляра MySQL было вызвано приложениями, проверяющими, была ли БД.

Я этого не делаю. Я полагаюсь на то, что у меня будет ошибка соединения, если сервер ушел, и я пытаюсь что-то сделать.

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

Нет.

Вы пингуете SO, прежде чем перемещаться туда в браузере, просто чтобы убедиться, что сервер работает?

Поэтому мне было интересно, следует ли мне или не нужно пинговать сервер mysql (mysqli_ping), чтобы убедиться, что сервер всегда жив до запуска запроса?

На самом деле, нет. Если он неактивен, вы узнаете сообщения об ошибках, поступающие через ваши запросы или при подключении к базе данных. Вы можете получить mysql-ошибку с помощью:

mysql_error() 

Пример:

 mysql_connect(......) or die(mysql_error()); 

Это не стандартный способ борьбы с ним … Если есть исключение, вы будете заниматься этим.

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

Вообще нет.

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

В этом случае полезно mysqli.reconnect для true в php.ini.

Нет.

Просто потому, что успешный вызов ping не означает, что запрос будет. Что делать, если сервер становится недоступным между тем, как вы его пинговали, и временем выполнения запроса?

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

Добавление пинга просто добавляет ненужные круглые поездки, в конечном счете замедляя ваш код.

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

Кроме этого, нет.

Единственный раз, когда было бы полезно использовать ping, было бы, если бы вы реализовали свою собственную систему объединения пула db. Даже в этом случае я не буду пинговать перед каждым запросом, просто на каждом «подключении» / контроле в пуле.