В начале каждой страницы PHP я открываю соединение с MySQL, использую его на всей странице и закрываю его в конце страницы. Тем не менее, я часто перенаправляю посередине страницы на другую страницу, и поэтому в этих случаях соединение не закрывается. Я понимаю, что это неплохо для производительности веб-сервера, поскольку PHP автоматически закрывает все соединения MySQL в конце каждой страницы. Существуют ли какие-либо другие проблемы здесь, чтобы иметь в виду, или это правда, что вам не нужно беспокоиться о закрытии соединений с базой данных в PHP?
$mysqli = new mysqli("localhost", "root", "", "test"); ...do stuff, perhaps redirect to another page... $mysqli->close();
От: http://us3.php.net/manual/en/mysqli.close.php
«Открытые соединения (и аналогичные ресурсы) автоматически уничтожаются в конце выполнения скрипта. Однако вы должны закрыть или освободить все соединения, результирующие наборы и дескрипторы операторов, как только они больше не требуются. Это поможет вернуть ресурсы PHP и MySQL быстрее ».
Просто потому, что вы перенаправляете, это не означает, что сценарий перестает выполняться. Переадресация – это просто отправляемый заголовок. Если вы не выйдете () сразу после этого, остальная часть вашего скрипта будет продолжена. Когда скрипт завершит работу, он закроет все открытые соединения (или отпустит их обратно в пул, если вы используете постоянные подключения). Не беспокойтесь об этом.
Возможно, существует ограничение на количество подключений одновременно, поэтому, если у вас много пользователей, вы можете столкнуться с SQL-соединениями. По сути, пользователи будут видеть ошибки SQL вместо хороших веб-страниц.
Лучше открыть соединение для чтения данных, затем закрыть его, затем отобразить данные, и как только пользователь нажмет «отправить», вы откроете другое соединение, а затем отправите все изменения.