Зачем указывать явное соединение с базой данных? - PullRequest
3 голосов
/ 12 января 2010

Я делаю простой блог для себя и, читая руководство по PHP, нашел это http://us2.php.net/manual/en/function.pg-query.php

Там написано

ресурс pg_query ([ресурс $ connection], строка $ query)

...

Примечание: хотя соединение может быть опущено, это не рекомендуется, так как это может быть причиной трудно найти ошибки в скриптах.

Почему нельзя просто использовать последнее соединение? Я никогда не планирую открывать более одного соединения на скрипт PHP, так как это может вызвать ошибки?

Ответы [ 3 ]

13 голосов
/ 12 января 2010

Хах. «Я никогда не планирую , если на один скрипт PHP открыто более 1 соединения.»

Я помню последний раз, когда я это говорил. Это было в три. Я был тогда молодым хулиганом, очень похожим на тебя. Полный плевок и уксуса. Зачем что-то делать, если мне не нужно? Это было преобладающей мудростью в нашем маленьком стартапе. "Просто сделай это!" мы бы кричали. Кроме того, мы носили лук на наших поясах.

Что ж ... пришло время добавить небольшую статистическую базу данных на основной сайт. Ничего особенного, просто хотелось, чтобы некоторые статистические данные отслеживались отдельно. Я решил снова использовать оболочку базы данных. Это была хорошая обертка для своего времени! Абстрагировал все функции базы данных, которые мне нужны. Но как только я добавил это туда, начали происходить некоторые дурацкие вещи. Это не имело смысла. У меня было два отдельных объекта-обертки базы данных ... два отдельных соединения! Как они могли повлиять друг на друга? Но тогда пользователи будут выходить из системы случайно. Сессии не удастся. Иногда обновление ключа может идти плохо. Некоторые запросы выполнялись в неправильных базах данных. Собаки и кошки начали жить вместе! Это была массовая истерия!

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

* нюхать *

1 голос
/ 12 января 2010

Это для тех, кому нужны явные звонки в различные базы данных. Если вы этого не сделаете, игнорируйте его :) Некоторые сценарии работают с локальными и удаленными базами данных, а другие работают с несколькими локальными или несколькими удаленными базами данных.

0 голосов
/ 12 января 2010

Возможно, это связано с порядком рассуждений? Если бы речь шла о рекомендации явно использовать ресурс соединения, то же примечание было бы в mysql_query (). Если нет ничего специфического для PostgreSQL, о котором я не знаю.

Короче говоря, я не вижу никаких проблем, опуская аргумент подключения для приложений с одним подключением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...