|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
Перемещения по категориям и прочие типичные действия подразумевают послания запросов в mysql. Как лучше сделать: 1. каждое обращение будет состоять из установления соединения, выполнения запроса и отключения; 2. сразу создать соединение и не закрывать его, выполняя только запросы? Надежнее, понятно, первое... Но всё же как лучше? Чем лучше? И чем грозит? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2003, 12:40 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
> Надежнее, понятно, первое... ??? не вижу причин, почему этот вариант надежнее. Обычно делают все в одном соединении (AFAIK). Лучше укажи какой язык используешь и спроси на форуме по этому языку ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2003, 13:42 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
На php пишу... Хорошо, если мы установили соединение один раз, то как гарантировать, что оно не оборвалось? Каждый раз проверять перед запросом? Или обрабатывать возможную ошибку при посыле запроса? И как своевременно закрывать соединение? Что произойдёт, если юзера просто внезапно снесёт? Чесс гря я почти не знаком с механизмами этих соединений, как оно работает... Знаю только что его надо создавать и закрывать ) Что и делаю перед каждым изменением, запросом юзера. Попровьте пожалуйта или поясните чего... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2003, 20:57 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
Если юзверя чем-нибудь снесет (ну... там балкой или что там еще падает =)) то тогда при посылке запроса будет выдана ошибка. И ессно ни какие данные не будут добавлены. Юзверю придеться по новому запускать скрипт. И по том. Это ж элементарная логика! Что до закрытия соединений, то их можно и не закрывать. Не суть важно. ©2003 ScableR... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2003, 04:18 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
1. php сам закрываетсоединение с mysql при окончании работы скрипта 2. Вообще-то обычно соединение само так просто не пропадает. Это либо проблемы хостера, либо еще какие-то форс-мажорные обстоятельства. Код: plaintext 1. 2. 3. 4. 5.
если соединение пропало - пользователю будет выдано сообщение и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2003, 11:42 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
"Открываешь одно соединение" Точек входа может быть несколько. Т.е. соединение надо создавать на каждой из них. Тогда может так: Код: plaintext 1. 2. 3. 4. 5.
А на функцию отсоединения можно просто боль забить? Стоп.. "php сам закрывает соединение с mysql при окончании работы скрипта " А окончание работы скрипта - это где?? Когда выполнился весь набор предусмотренных действий после, скажем, активации ссылки? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2003, 17:25 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
В _норманой_ пограмме всегда одна точка входа. С нормальной инициализацией подключения к СУБД (если надо) и инициализацией глобальных переменных (если они есть). Если писать все по-человечески, то проблем с отслеживанием подключения возникнуть не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2003, 22:05 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
Несколько соображений без конкретных советов: В mysql операция соединения - очень "легковесная" (в отличие от большинства других СУБД), так что коннект каждый раз - много ресурсов не займет. Если надо проверить - живо ли соединение, делается mysql_ping. Если соединение живо - то ничего не происходит, если уже оборвалось, то mysql_ping переконнектится к серверу с параметрами, которые были раньше в соединении. Если хочешь использовать постоянные соединения (типа mysql_pconnect ), то помни что могут быть накладки например с временными таблицами (или другими атрибутами сессии) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2003, 00:47 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
2 Stellar Ты всегда такие ценные советы даёшь? :-))) "В _норманой_ пограмме..." "...писать все по-человечески..." Ты видать с олимпа программирования спустился ко мне смертному ---------------------------------- Видимо я не так изъяснил суть.. Я к сожалению не знаю необходимой терминологии. На пальцах напишу тогда? Есть главная страница. Никаких скриптов не запускалось ещё. На ней, скажем, 5 разных ссылок на разные скрипты, функции... Юзер может сначала на одно ткнуть, затем на другое... В любой комбинации. Кажое его действие скриптом обращается в БД. Так вот, мне каждый из пяти скриптов обрамлять установлением соединения и его завершением или создать его один раз, а в остальных возможных действиях подразумевать, что оно уже есть? А т.к. все крипты равновесные, то обязательство установить соединение в первый раз может быть возложено именно на него. Вообще, раз уж тов. Хрен , что установление соединения легковесно, то можно, видимо, забить на проверки всякие, а просто устанавливать его каждый раз и завершать... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2003, 10:14 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
Не заморачивайся - устанавливай каждый раз. Просто подключи через инклюд в скрипты модуль с подключением к серванту - и все. Использовать p_connect можно только кады php внедрен в въеб-сервер как подгружаемый модуль, но с этим p_connect-ом мона поиметь гемор... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2003, 11:24 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
При каждом вызове скрипта надо устанавливать соединение. Функции типа pconnect'a используются для установки постоянного соединения, однако вызываться должны каждый раз. При этом алгоритм работы следующий: если ранее было установлено соедиение, оно используется в этот раз; если не было - оно создается. Так что сделать pconnect в скрипте a.php и не делать его в b.php, не получится. 2Paranoik: Да, я спустился с Олимпа, к тебе, смертному. )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2003, 12:13 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
Использовать 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2003, 12:17 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
Касаемо "поиметь гимор": 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). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2003, 12:22 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
>> Ерунда. >> Внимательно читай руководство: Ну вот сам и читай. Там же ниже и написано: Note, that these kind of links only work if you are using a module version of PHP. т.е. если ПХП работает в режиме CGI "wrapper - то использовать p_connect - нету смысла. По поводу гемора - уже писали выше - насчет временных таблиц... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2003, 15:54 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
А вам не кажется, что выражения "нету смысла" и "можно использовать только" имеют слегка разный смысл? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 10:39 |
|
Подскажите как в магазине лучше поступить с соединениями (на каждый запрос конектиться заново или на одном соединении всё делать)
|
|||
---|---|---|---|
#18+
2stellar ладно, аполлон, понтов поменьше, да по теме побольше; глядишь и люди потянутся. Благодарю всех за конструктивные соображения! Выводы сделаны. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 10:49 |
|
|
start [/forum/topic.php?fid=47&msg=32298192&tid=1855694]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
87ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 195ms |
0 / 0 |