5 ответов:
с документация:
Примечание: ссылка на сервер будет закрыта, как только выполнение скрипта закончится, если он не закрыт ранее явным вызовом mysql_close().
Если ваш скрипт имеет достаточное количество обработки для выполнения после извлечения результата и получил полный набор результатов, вы определенно должны закрыть соединение. Если вы этого не сделаете, есть шанс, что сервер MySQL достигнет его ограничение подключения, когда веб-сервер находится под интенсивным использованием. Если вы не можете закрыть соединение MySQL до конца сценария, это чище, хотя и не нужно делать это явно.
Я не уверен, как fastcgi влияет на вещи. одна страница утверждает, что сборка PHP, поддерживающая fastcgi, создаст постоянные соединения, даже для mysql_connect. Это противоречит документации в том, что соединение закрывается, когда процесс, а не скрипт, концы. Вместо того, чтобы тестировать его, я собираюсь рекомендовать использовать mysql_close(). На самом деле, я рекомендую использовать PDO, если он доступен.
Это важно? Не так уж и много
считается ли это хорошей практикой, чтобы следовать? Да.
Я не понимаю, почему бы вам не закрыть его.
при использовании чего-то вроде cgi, совершенно необязательно закрывать ваши соединения mysql, так как они автоматически закрываются в конце выполнения скрипта. При использовании постоянных технологий, таких как mod_perl и другие, которые поддерживают ваши соединения между запросами, важно отслеживать соединения, глобальные переменные и т. д..
в основном, для постоянных данных, убирать за собой. Для тривиальных, непостоянных данных все это исчезнет, когда запрос в любом случае заканчивается. В любом случае, лучше всего всегда закрывать свои связи.
закрывается, как только скрипт завершает выполнение. Если вы не открыли постоянное соединение. В идеале вы должны освободить ресурс (соединение здесь), как только вы закончите с ним. Если нет хорошего шанса, что вы будете нуждаться в нем снова очень скоро в исполнении.
пул соединений или использование постоянных соединений (если это то, что вы имели в виду) является хорошей идеей, если вы находитесь за одним сервером базы данных. Однако, если есть больше серверов, и вы балансировка нагрузки, это может повредить распределению работы. Обычно некоторые клиенты выполняют тяжелые запросы, а другие-более легкие. Поэтому, если одно и то же соединение используется более n, некоторые серверы будут сильно загружены, а другие будут использоваться. Рассмотрите возможность использования меньших ttls и переменного размера пула соединений.
большинство CMSs закрывают соединение MySQL в конце запроса, что действительно бессмысленно, потому что PHP сделает это в любом случае.
однако, если у вас есть сценарий, в котором соединение больше не требуется, скажем, в середине сценария, а затем происходят другие тяжелые действия, тогда рекомендуется явно закрыть соединение. Это позволит освободить некоторые ресурсы.
теперь много было сказано о преимуществах закрытия соединения, но почти ничего было сказано о преимуществах не закрытия его. По сути, если вы не закрываете соединение в конце сценария, то вы действительно экономите некоторые ресурсы. Представим себе веб-приложение (или приложения) получают 100 страниц в секунду. Так что, каждую секунду, вам нужно будет вызывать
mysqli_close100 раз-это означает, что в каждую секунду, у вас есть 100 ненужных roundtrips к серверу баз данных, чтобы закрыть открытые соединения. С точки зрения производительности, это чисто накладные расходы, так как PHP будет проверять наличие открытых соединений, когда скрипт будет завершен в любом случае, и закроет эти соединения, и это может быть так, потому что все происходит так быстро, что PHP не видит, что вы закрыли эти соединения и попытаетесь закрыть их снова.Примечание: ответ выше предполагает, что вы не используете постоянные соединения (постоянные соединения не используются ни в одном из основных CMSs).
Comments