Что произойдет, если соединения MySQL постоянно не закрываются на страницах PHP? - PullRequest
7 голосов
/ 19 сентября 2008

В начале каждой страницы PHP я открываю соединение с MySQL, использую его по всей странице и закрываю в конце страницы. Тем не менее, я часто перенаправляю в середине страницы на другую страницу, и поэтому в этих случаях соединение не закрывается. Я понимаю, что это не плохо для производительности веб-сервера, так как PHP автоматически закрывает все соединения MySQL в конце каждой страницы в любом случае. Есть ли здесь другие проблемы, о которых следует помнить, или действительно ли вам не нужно беспокоиться о закрытии соединений с базой данных в PHP?

$mysqli = new mysqli("localhost", "root", "", "test");
...do stuff, perhaps redirect to another page...
$mysqli->close();

Ответы [ 3 ]

18 голосов
/ 19 сентября 2008

От: http://us3.php.net/manual/en/mysqli.close.php

"Открытые соединения (и аналогичные ресурсы) автоматически уничтожаются в конце выполнения скрипта. Однако вы все равно должны закрыть или освободить все соединения, наборы результатов и дескрипторы операторов, как только они больше не нужны. Это поможет вернуть ресурсы для PHP и MySQL быстрее. "

4 голосов
/ 19 сентября 2008

То, что вы перенаправляете, не означает, что скрипт перестает выполняться. Перенаправление - это просто отправляемый заголовок. Если вы не выйдете () сразу после этого, остальная часть вашего скрипта продолжит работу. Когда скрипт завершит работу, он закроет все открытые соединения (или вернет их обратно в пул, если вы используете постоянные соединения). Не беспокойся об этом.

2 голосов
/ 19 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...