[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: закрытие соединения - mysql_close()
kuzroman
Cтоит ли закрыват соединение - mysql_close() сразу после написания запроса?
когда вообще целесообразно делать закрытие соединения?
Ведь по рекомендациям php и sql все что открывается должно закрываться, а колличество соединениц в sql вообще ограничено.

Раньше никогда не закрывал, сейчас узнал что это делать необходимо.
Если кто работал с высоконагруженными проектами отпишитесь!



Спустя 25 минут, 32 секунды (3.12.2011 - 19:57) Rand написал(а):
Что за рекомендации такие? В манауле PHP написано, что обычно нет необходимости закрывать непостоянное соединение, по скольку оно автоматически закрывается после работы скрипта. Чисто логически - есть смысл закрывать, если после выполнения запроса есть код, для выполнения которого нужно много времени.

Спустя 5 минут, 1 секунда (3.12.2011 - 20:02) inpost написал(а):
Мы разделили, допустим, по MVC шаблону, далее после последнего запроса к Мускулу засекаешь microtime, и в конце всего документа - выводишь разницу. Если там что-то вроде >0.01, >0.1 , то есть смысл smile.gif А если 0.0001, то каков от этого смысл? Ты больше времени потратишь на закрытие соединения из-за чего клиент получит данные чуточку позже.
И вообще, есть смысл задумываться, когда станет вопрос оптимизации сложных проектов. А так -всё забудется.

Спустя 16 минут, 5 секунд (3.12.2011 - 20:18) kuzroman написал(а):
Понятно, если выполнение запроса занимает много времени, то закрываем соединение после его передачи.
Если запрос выполняется быстро, то его не закрываем.

Спустя 46 секунд (3.12.2011 - 20:19) imbalance_hero написал(а):
При чём тут запрос? Надо закрывать после ВСЕХ запросов. smile.gif

Спустя 3 минуты, 54 секунды (3.12.2011 - 20:23) kuzroman написал(а):
я имел ввиду что если запрос выполняется быстро, то соединение с базой не закрываем.

Спустя 2 минуты, 53 секунды (3.12.2011 - 20:26) Rand написал(а):
Цитата (kuzroman @ 3.12.2011 - 23:18)
Понятно, если выполнение запроса занимает много времени, то закрываем соединение после его передачи.
Если запрос выполняется быстро, то его не закрываем.

Нет, имеется ввиду долгое выполнение PHP кода, следующего за SQL запросом. Если у тебя есть какой-то долгий SQL запрос, то смысла ставить после него mysql_close нет, по скольку следующая строчка после запроса выполнится только тогда, когда запрос вернет результат. Т.е. соединение в любом случае будет открыто пока запрос не выполнится.

Спустя 9 минут, 15 секунд (3.12.2011 - 20:35) kuzroman написал(а):
тогда что вы имелли ввиду под:
Цитата
Чисто логически - есть смысл закрывать, если после выполнения запроса есть код, для выполнения которого нужно много времени.


значит
1- запрос выполнился
2- больше запросов нет идет только длинное выполнение алгоритмов php

в этом случае целесообразно закрытие?

Спустя 45 минут, 38 секунд (3.12.2011 - 21:21) Rand написал(а):
Цитата (kuzroman @ 3.12.2011 - 23:35)
значит
1- запрос выполнился
2- больше запросов нет идет только длинное выполнение алгоритмов php

в этом случае целесообразно закрытие?

Да.

Спустя 1 час, 19 минут, 6 секунд (3.12.2011 - 22:40) imbalance_hero написал(а):
kuzroman
mysql имеет допустимое количество открытых соединений, назовём эту цифру в 50. Вот открылись 50, что будет делать 51? Станет в очередь и будет ждать, пока предыдущее соединение закроется. Если очередь разрастается - БД падает!
Теперь, все запросы заняли у тебя 10 секунд, выполнения пхп - ещё 10 сек. Посчитай, сколько в минуту могут оказаться на сайте людей при закрытии ДО ПХП, и сколько после ПХП. Простая математика.
Все цифры вымышленные, основа взята лишь логика понимания, как всё работает, чтобы ты так же понимал!

Спустя 14 часов, 9 минут, 6 секунд (4.12.2011 - 12:49) kuzroman написал(а):
Да, спасибо всем, доступно объяснили.


_____________
kuzroman@list.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.