Зачем использовать mysqli_close ()? - PullRequest
11 голосов
/ 29 августа 2009

Есть ли причина, по которой мне следует закрывать соединение после запроса или в конце сценария?

Каковы преимущества того, что вы делаете / не делаете?

Ответы [ 2 ]

24 голосов
/ 29 августа 2009

Соединение (если оно не является постоянным) всегда закрывается в конце скрипта, поэтому теоретически вам не нужно закрывать его самостоятельно.

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

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


Причина, по которой мы часто сами не закрываем связи:

  • мы обычно не знаем, когда мы выполнили все наши запросы - это особенно верно для страниц, которые состоят из множества маленьких "блоков"; каждый из них не зависит от других и может выполнять запросы самостоятельно; Итак, когда мы можем закрыть соединение?
  • веб-страницы, как правило, генерируются довольно быстро, поэтому мы не беспокоимся о закрытии соединения с БД.
5 голосов
/ 29 августа 2009

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

Примером этого может быть создание большого отчета в формате PDF. Создание и запись файла могут занять более 20-30 секунд, но вы получите все необходимые данные в первую секунду.

Обычно, однако, вы также можете сделать это автоматически (при условии, что соединение не является постоянным).

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