Безопасно ли использовать постоянное соединение с использованием интерфейса PHP mysqli?

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

Я прочитал ссылку: Расширение mysqli и постоянные соединения

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

  • Откат активных транзакций
  • Закрыть и удалить временные таблицы
  • Разблокировать столы
  • Сбросить переменные сеанса
  • Закрыть подготовленные операторы (всегда происходит с PHP)
  • Закрыть обработчик
  • Снять блокировки, полученные с помощью GET_LOCK()

Теперь это в значительной степени выполняет большую часть очистки, включая блокировки READ/WRITE для таблиц, если таковые имеются. Поэтому я считаю, что это должно быть безопасно. Могу ли я ошибаться?

Кроме того, в нем говорится, что есть некоторые потери производительности в виде дополнительного времени, необходимого для очистки. Я хотел бы знать, сколько это может быть в миллисекундах? Может ли он когда-либо быть таким большим, как, скажем, 100 мс?

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


person Ouroboros    schedule 28.08.2015    source источник


Ответы (1)


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

Но если вы это сделаете - да, вы можете поверить, что это должно быть безопасно.

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

person Your Common Sense    schedule 28.08.2015
comment
Так будет ли время, необходимое для очистки, больше, чем соединение с БД? - person Ouroboros; 28.08.2015