powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
16 сообщений из 16, страница 1 из 1
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32297375
Paranoik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перемещения по категориям и прочие типичные действия подразумевают послания запросов в mysql. Как лучше сделать:
1. каждое обращение будет состоять из установления соединения, выполнения запроса и отключения;
2. сразу создать соединение и не закрывать его, выполняя только запросы?

Надежнее, понятно, первое... Но всё же как лучше? Чем лучше? И чем грозит?

Спасибо.
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32297392
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Надежнее, понятно, первое...
??? не вижу причин, почему этот вариант надежнее.
Обычно делают все в одном соединении (AFAIK).
Лучше укажи какой язык используешь и спроси на форуме по этому языку
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32297566
Paranoik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На php пишу...

Хорошо, если мы установили соединение один раз, то как гарантировать, что оно не оборвалось? Каждый раз проверять перед запросом? Или обрабатывать возможную ошибку при посыле запроса? И как своевременно закрывать соединение? Что произойдёт, если юзера просто внезапно снесёт?

Чесс гря я почти не знаком с механизмами этих соединений, как оно работает... Знаю только что его надо создавать и закрывать )
Что и делаю перед каждым изменением, запросом юзера.

Попровьте пожалуйта или поясните чего...
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32297634
Фотография ScableR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если юзверя чем-нибудь снесет (ну... там балкой или что там еще падает =)) то тогда при посылке запроса будет выдана ошибка. И ессно ни какие данные не будут добавлены. Юзверю придеться по новому запускать скрипт. И по том. Это ж элементарная логика! Что до закрытия соединений, то их можно и не закрывать. Не суть важно.

©2003 ScableR...
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32297677
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. php сам закрываетсоединение с mysql при окончании работы скрипта
2. Вообще-то обычно соединение само так просто не пропадает. Это либо проблемы хостера, либо еще какие-то форс-мажорные обстоятельства.
Код: plaintext
1.
2.
3.
4.
5.
// Открываешь одно соединение:
$conn = mysql_connect(...)
...
// делаешь запросы например так
$res = mysql_query( "SELECT * FROM tab_name WHERE id = 1 ",$conn) or die( "Извините, на сервере произошла ошибка" );
... // и т.д.

если соединение пропало - пользователю будет выдано сообщение и все.
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32297757
Paranoik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Открываешь одно соединение"
Точек входа может быть несколько. Т.е. соединение надо создавать на каждой из них. Тогда может так:
Код: plaintext
1.
2.
3.
4.
5.
if (!$connected){
    $conn = mysql_connect(...);
    $connected = TRUE;//глобальная...
}
$res = mysql_query( "SELECT * FROM tab_name WHERE id = 1 ",$conn) or die( "Извините, на сервере произошла ошибка" );



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

Стоп.. "php сам закрывает соединение с mysql при окончании работы скрипта "
А окончание работы скрипта - это где?? Когда выполнился весь набор предусмотренных действий после, скажем, активации ссылки?
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32297825
Stellar.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В _норманой_ пограмме всегда одна точка входа. С нормальной инициализацией подключения к СУБД (если надо) и инициализацией глобальных переменных (если они есть).

Если писать все по-человечески, то проблем с отслеживанием подключения возникнуть не может.
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32297840
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько соображений без конкретных советов:

В mysql операция соединения - очень "легковесная" (в отличие от большинства других СУБД), так что коннект каждый раз - много ресурсов не займет.

Если надо проверить - живо ли соединение, делается mysql_ping. Если соединение живо - то ничего не происходит, если уже оборвалось, то mysql_ping переконнектится к серверу с параметрами, которые были раньше в соединении.

Если хочешь использовать постоянные соединения (типа mysql_pconnect ), то помни что могут быть накладки например с временными таблицами (или другими атрибутами сессии)
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32298014
Paranoik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Stellar
Ты всегда такие ценные советы даёшь? :-)))
"В _норманой_ пограмме..." "...писать все по-человечески..."
Ты видать с олимпа программирования спустился ко мне смертному
----------------------------------


Видимо я не так изъяснил суть.. Я к сожалению не знаю необходимой терминологии. На пальцах напишу тогда?
Есть главная страница. Никаких скриптов не запускалось ещё. На ней, скажем, 5 разных ссылок на разные скрипты, функции... Юзер может сначала на одно ткнуть, затем на другое... В любой комбинации. Кажое его действие скриптом обращается в БД. Так вот, мне каждый из пяти скриптов обрамлять установлением соединения и его завершением или создать его один раз, а в остальных возможных действиях подразумевать, что оно уже есть? А т.к. все крипты равновесные, то обязательство установить соединение в первый раз может быть возложено именно на него.

Вообще, раз уж тов. Хрен , что установление соединения легковесно, то можно, видимо, забить на проверки всякие, а просто устанавливать его каждый раз и завершать...
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32298094
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не заморачивайся - устанавливай каждый раз. Просто подключи через инклюд в скрипты модуль с подключением к серванту - и все.
Использовать p_connect можно только кады php внедрен в въеб-сервер как подгружаемый модуль, но с этим p_connect-ом мона поиметь гемор...
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32298188
Stellar.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При каждом вызове скрипта надо устанавливать соединение.

Функции типа pconnect'a используются для установки постоянного соединения, однако вызываться должны каждый раз. При этом алгоритм работы следующий: если ранее было установлено соедиение, оно используется в этот раз; если не было - оно создается.

Так что сделать pconnect в скрипте a.php и не делать его в b.php, не получится.

2Paranoik:
Да, я спустился с Олимпа, к тебе, смертному. ))))
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32298192
Stellar.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость

Использовать p_connect можно только кады php внедрен в въеб-сервер как подгружаемый модуль, но с этим p_connect-ом мона поиметь гемор...


Ерунда.
Внимательно читай руководство:
http://ru3.php.net/manual/ru/function.mysql-pconnect.php

---
mysql_pconnect() acts very much like mysql_connect() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mysql_close() will not close links established by mysql_pconnect()).

---

Использовать pconnect можно и нужно всегда. Если php не установлен как модуль вебсервера, pconnect работает точно также, как и connect.
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32298200
Stellar.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Касаемо "поиметь гимор":

Using persistent connections can require a bit of tuning of your Apache and MySQL configurations to ensure that you do not exceed the number of connections allowed by MySQL.

То есть очевидно, что это задача админа, а не программиста -- настраивать Apache и MySQL.

От себя могу добавить, что ресурс с посещаемостью 25000 уникумов в день отлично работал с pconnect без какой-либо дополнительной настройки MySQL и Apache. При этом кроме этого проекта на машине вертелись еще 4 подобных, но с меньшей посещаемостью (от 5000 до 17000).
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32298632
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Ерунда.
>> Внимательно читай руководство:

Ну вот сам и читай. Там же ниже и написано:
Note, that these kind of links only work if you are using a module version of PHP.

т.е. если ПХП работает в режиме CGI "wrapper - то использовать p_connect - нету смысла.
По поводу гемора - уже писали выше - насчет временных таблиц...
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32299390
Stellar.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вам не кажется, что выражения "нету смысла" и "можно использовать только" имеют слегка разный смысл?
...
Рейтинг: 0 / 0
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
    #32299404
Paranoik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2stellar ладно, аполлон, понтов поменьше, да по теме побольше; глядишь и люди потянутся.


Благодарю всех за конструктивные соображения! Выводы сделаны.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]