![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Muerto |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: нет Всего: 4 |
закрывать каждый раз подключение или нет?
обычно работаю так ->
oc= connection to database , cc=clsoe connection if its open,qc=mysql_query; и так через каждую группу запросов но можно и иначе
now oc check if con open, and if it is, dont connect again, и так через каждую группу запросов или же header.php -> oc(); footer -> cc();
в обшем не ясно пару вещей 1. насколько страшно закрывать подключение каждый раз? 2. насколько страшно его открывать в самом начале и закрывать в самом конце? ясно что проблема в пункте 2 ето не закрытые подклучения которые будут если фоотер не загрузится или не успеет загрузится так или иначе... Это сообщение отредактировал(а) Muerto - 10.7.2010, 13:48 |
||||||
|
|||||||
Mavrun |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 25.11.2007 Репутация: 2 Всего: 13 |
"Постоянное соединение с сервером БД. Позволяет избежать потерь времени на повторное соединение. Однако стоит помнить, что у сервера может быть ограничение на количество соединений, и в том случае, если посещаемость сайта очень высокая, то постоянное соединение может сыграть злую шутку." © http://shublog.ru/mysql/kak-optimizirovat-sql-zaprosy/
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
закрывать соединение после каждого выполненного запроса - бессмысленное, ничем не оправданное действие, которые вызовет замедление работы скрипта. закрывать в конце всего скрипта подключение не принесет вреда, но и бессмысленно от того, что подключение(если оно было открыто через mysql_connect, а не mysql_pconnect) автоматически будет закрыто при завершении работы скрипта.
|
|||
|
||||
Muerto |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: нет Всего: 4 |
т.е. по твоему, можно вставить в самый низ закрытие но и без него в самом конце подключение будет закрыто?
Добавлено через 6 минут и 50 секунд у меня в скрипте еще фишка такая что я кеширую, поетому раз в минут 5 есть запросов 14 на страницу, а так запросов 0, и как бы открывать в хедере и закрывать в футере может быть и лишним если запросов 0... |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
а зачем в таком случае открывать соединение в начале? почему не проверять при выполнении запроса: если подключения ещё не было, подключаться, в противном случае - просто выполнять запрос?
Добавлено через 4 минуты и 22 секунды зачем верить на слово? почему не убедиться самому?
|
|||
|
||||
Muerto |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: нет Всего: 4 |
Я таки изменил немного свои функции...
теперь функцию oc(); Вызывает qc(); а cc(): стоит в футере, в самом конце... функция qc(); смотрит если $conamount>0 и если нет, то делает oc(); ... Тем самым удалось ускорить скрипт с Сгенерировано за: 0.0157 сек до Сгенерировано за: 0.0087 сек Под/Зап/Откр: 1/12/0 под = подключение, зап = запросы откр= не закрытые подключения... раньше было бы Под/Зап/Откр: 10/12/0 Ускорение на 50% фактически... впечатляет... даже и не думал что так влияет открытие и закрытие Это сообщение отредактировал(а) Muerto - 11.7.2010, 16:01 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
т.е. у тебя подключений может быть больше одного? непонятно пишешь. приведи код, что ли. а то как-то мне опасливо: вдруг, у тебя на каждый запрос создается отдельное подключение и ты будешь говорить, что это я посоветовал ![]() |
|||
|
||||
Muerto |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: нет Всего: 4 |
Нет, скрипт умный, и проверяет если есть подключение или нет перед тем как я его посылаю делать qc();
К примеру <?$data=qc("select * from vingrad");?> и теперь функция qc запускается, смотрит, открыто подключение или нет, если нет то через oc подключаем, а если да, то просто делаем запрос и возвращаем результат при условии что не было ошибок, если были ошибки выдаем их и останавливаем скрипт... Почему мне нужны отдельные функции для подключения и работы с базой? 1. мне так удобно 2. позволяет точно отследить количество подключений запросов и не закрытых подключений 3. экономит количество кода, уменьшает скрипт в два раза если он работает много с базой... Это сообщение отредактировал(а) Muerto - 11.7.2010, 16:21 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
||||
|
||||
Muerto |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: нет Всего: 4 |
конечно, он будет делать клоуз только если было оно открыто...
Поскольку я использую кеширование которе я разработал, и оно мне кеширует вывод с базы в файлы, то запросов как правило у меня вообще 0... |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |