Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> закрывать каждый раз подключение или нет? 
:(
    Опции темы
Muerto
Дата 10.7.2010, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



закрывать каждый раз подключение или нет?

обычно работаю так ->

Код

oc();
$getdtaa=qc("select * from articles");
cc();

oc= connection to database , cc=clsoe connection if its open,qc=mysql_query;

и так через каждую группу запросов

но можно и иначе
Код

oc();
$getdtaa=qc("select * from articles");

now oc check if con open, and if it is, dont connect again, 
и так через каждую группу запросов

или же 
header.php -> oc();
footer -> cc();
Код

$getdtaa=qc("select * from articles");


в обшем не ясно пару вещей
1. насколько страшно закрывать подключение каждый раз?
2. насколько страшно его открывать в самом начале и закрывать в самом конце?

ясно что  проблема в пункте 2 ето не закрытые подклучения которые будут если фоотер не загрузится или не успеет загрузится так  или иначе...

Это сообщение отредактировал(а) Muerto - 10.7.2010, 13:48


--------------------
user posted image
PM MAIL   Вверх
Mavrun
Дата 10.7.2010, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 25.11.2007

Репутация: 2
Всего: 13



"Постоянное соединение с сервером БД. Позволяет избежать потерь времени на повторное соединение. Однако стоит помнить, что у сервера может быть ограничение на количество соединений, и в том случае, если посещаемость сайта очень высокая, то постоянное соединение может сыграть злую шутку." © http://shublog.ru/mysql/kak-optimizirovat-sql-zaprosy/
PM MAIL   Вверх
skyboy
Дата 10.7.2010, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



закрывать соединение после каждого выполненного запроса - бессмысленное, ничем не оправданное действие, которые вызовет замедление работы скрипта. закрывать в конце всего скрипта подключение не принесет вреда, но и бессмысленно  от того, что подключение(если оно было открыто через mysql_connect, а не mysql_pconnect) автоматически будет закрыто при завершении работы скрипта.
PM MAIL   Вверх
Muerto
Дата 10.7.2010, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



т.е. по твоему, можно вставить в самый низ закрытие но и без него в самом конце подключение будет закрыто?

Добавлено через 6 минут и 50 секунд
у меня в скрипте еще фишка такая что я кеширую, поетому раз в минут 5 есть  запросов 14 на страницу, а так запросов 0, и как бы открывать в хедере и закрывать в футере может быть и лишним если запросов 0...


--------------------
user posted image
PM MAIL   Вверх
skyboy
Дата 11.7.2010, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



а зачем в таком случае открывать соединение в начале? почему не проверять при выполнении запроса: если подключения ещё не было, подключаться, в противном случае - просто выполнять запрос?

Добавлено через 4 минуты и 22 секунды
Цитата(Muerto @  10.7.2010,  22:23 Найти цитируемый пост)
т.е. по твоему

зачем верить на слово? почему не убедиться самому?
Цитата(php.net/mysql_close)

Using mysql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution

PM MAIL   Вверх
Muerto
Дата 11.7.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 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


--------------------
user posted image
PM MAIL   Вверх
skyboy
Дата 11.7.2010, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(Muerto @  11.7.2010,  14:59 Найти цитируемый пост)
функция qc(); смотрит если $conamount>0 и если нет, то делает oc(); ...

т.е. у тебя подключений может быть больше одного?
Цитата(Muerto @  11.7.2010,  14:59 Найти цитируемый пост)
теперь 
функцию oc();
Вызывает qc();

непонятно пишешь.
приведи код, что ли. а то как-то мне опасливо: вдруг, у тебя на каждый запрос создается отдельное подключение и ты будешь говорить, что это я посоветовал smile
PM MAIL   Вверх
Muerto
Дата 11.7.2010, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



Нет, скрипт умный, и проверяет если есть подключение или нет перед тем как я его посылаю делать qc();

К примеру

<?$data=qc("select * from vingrad");?>

и теперь функция qc запускается, смотрит, открыто подключение или нет, если нет то через oc подключаем, а если да, то просто делаем запрос и возвращаем результат при условии что не было ошибок, если были ошибки выдаем их и останавливаем скрипт...


Почему мне нужны отдельные функции для подключения и работы с базой?

1. мне так удобно
2. позволяет точно отследить количество подключений запросов и не закрытых подключений
3. экономит количество кода, уменьшает скрипт в два раза если он работает много с базой...

Это сообщение отредактировал(а) Muerto - 11.7.2010, 16:21


--------------------
user posted image
PM MAIL   Вверх
skyboy
Дата 11.7.2010, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



хорошо, значит, тут все в порядке.
а вот:
Цитата(Muerto @  11.7.2010,  14:59 Найти цитируемый пост)
а cc(): стоит в футере, в самом конце...

там поставил проверку на случай, если подключение и не было открыто?


PM MAIL   Вверх
Muerto
Дата 11.7.2010, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



конечно, он будет делать клоуз только если было оно открыто...

Поскольку я использую кеширование которе я разработал, и оно мне кеширует вывод с базы в файлы, то запросов как правило у меня вообще 0...


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1148 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.