Существует довольно много блогов/ссылок, которые не рекомендуют использовать постоянные соединения, в основном потому, что очистка должна выполняться на стороне клиента, а также случаи, когда транзакции/блокировки должны быть корректно отменены. Однако эти ссылки устарели и не полностью относятся к PHP-интерфейсу mysqli.
Я прочитал ссылку: Расширение mysqli и постоянные соединения
Это ясно указывает на то, что он выполняет большую часть желаемой очистки, когда клиент неожиданно завершает работу:
- Откат активных транзакций
- Закрыть и удалить временные таблицы
- Разблокировать столы
- Сбросить переменные сеанса
- Закрыть подготовленные операторы (всегда происходит с PHP)
- Закрыть обработчик
- Снять блокировки, полученные с помощью GET_LOCK()
Теперь это в значительной степени выполняет большую часть очистки, включая блокировки READ/WRITE для таблиц, если таковые имеются. Поэтому я считаю, что это должно быть безопасно. Могу ли я ошибаться?
Кроме того, в нем говорится, что есть некоторые потери производительности в виде дополнительного времени, необходимого для очистки. Я хотел бы знать, сколько это может быть в миллисекундах? Может ли он когда-либо быть таким большим, как, скажем, 100 мс?
Однако функция автоматической очистки имеет свои преимущества и недостатки. Преимущество в том, что программисту больше не нужно беспокоиться о добавлении кода очистки, так как он вызывается автоматически. Однако недостатком является то, что код потенциально может быть немного медленнее, так как код для выполнения очистки должен запускаться каждый раз, когда соединение возвращается из пула соединений.