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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> pg_close() ошибка? закрывает постоянное соединен 
:(
    Опции темы
nIxOiD
Дата 11.1.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код
Код

pg_pconnect('...');
// соединение открыто

pg_close();
// соединение закрыто!!!


Выдержка из документации:
pg_close() закрывает непостоянное соединение с БД PostgreSQL



 smile 

Это сообщение отредактировал(а) nIxOiD - 11.1.2007, 14:16
PM MAIL   Вверх
Mal Hack
Дата 11.1.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 11
Всего: 261



Закрыть она его закроет, но это - не нужно.
PM ICQ   Вверх
nIxOiD
Дата 11.1.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот и вопрос в том, почему закроет. В документации же ясно прописано, что функция закрывает только временные соединения.
PM MAIL   Вверх
GZep
Дата 11.1.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


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

Репутация: -1
Всего: 32



Забудь про эту функцию и не вспоминай больше... PHP сам все сделает smile 
Цитата(nIxOiD @  11.1.2007,  15:30 Найти цитируемый пост)
В документации же ясно

Перевели неправильно smile 


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
Mal Hack
Дата 11.1.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 11
Всего: 261



nIxOiD, в чем отличие постоянного от непостоянного соединения? В том, что постоянное автоматически закроется по завершению скрипта.
PM ICQ   Вверх
nIxOiD
Дата 11.1.2007, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(GZep @  11.1.2007,  15:43 Найти цитируемый пост)
Перевели неправильно


пользуюсь первоисточником, переведено правильно


Цитата(GZep @  11.1.2007,  15:43 Найти цитируемый пост)
Забудь про эту функцию и не вспоминай больше... PHP сам все сделает


не могу т.к. вот моя ситуация: у меня открыто постоянное соединение к БД 1. C ней работает много модулей. А один модуль должен коннектиться к другой БД 2 и брать данные оттуда. С ней я устанавливаю временное соединение. Вот если не закрывать это временное соединение после работы с БД 2, то постоянное почему-то тоже переходит на БД 2. Т.е. выполняет все последующие запросы уже к ней. А если закрыть БД 2 через pg_close($conn), то закрывается и постоянное соединение с БД 1.
Похоже просто плохо реализована работа с несколькими БД одновременно. Или я чего-то не так делаю?
 smile 
PM MAIL   Вверх
Mal Hack
Дата 11.1.2007, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 11
Всего: 261



Обрати внимание на параметр для pg_close... Ну а далее по коду поймешь в чем дело.
PM ICQ   Вверх
nIxOiD
Дата 11.1.2007, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Mal Hack @  11.1.2007,  16:15 Найти цитируемый пост)
Обрати внимание на параметр для pg_close

в том то и дело что параметр (дискриптор соединения) указываю правильный - для БД2 - временной базы, а в нагрузку и постоянная БД1 закрывается  smile  smile 
PM MAIL   Вверх
Mal Hack
Дата 11.1.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 11
Всего: 261



Показывай код.
PM ICQ   Вверх
nIxOiD
Дата 11.1.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



глобальное подключение:
Код

// Подключение к БД
if (!pg_pconnect($aConfig['DBXT'])) {
    exit('Не смог подключиться к серверу БД');
}


А после вызова этой функции глобальное подключение "слетает"
Код

function GetFreeServer()
{
    global $aConfig;

    $conn = pg_connect($aConfig['DBPUBLIC']);
    if (!$conn) {
        throw new Exception('Не смог подключиться к БД!');
    }
    
    $res = pg_query($conn,"SELECT id,...;");
    if (pg_num_rows($res) == 0) {
        $return = false;
    } else {
        $return = pg_fetch_array($res,0);
    }
    pg_free_result($res);
    pg_close($conn);

    
    return $return;
}


Добавлено @ 16:43 
пока довольствуюсь временной заплаткой, вызывая после pg_close вот это
Код

    pg_pconnect($aConfig['DBXT']);


но заплатка - это заплатка. да и просто интересно, что я не так делаю
PM MAIL   Вверх
Mal Hack
Дата 11.1.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 11
Всего: 261



Цитата(nIxOiD @  11.1.2007,  16:41 Найти цитируемый пост)
// Подключение к БД
if (!pg_pconnect($aConfig['DBXT'])) {
    exit('Не смог подключиться к серверу БД');
}

Сделай также как и со вторым соединением через переменную. Только другую.
PM ICQ   Вверх
nIxOiD
Дата 11.1.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если сделаю, придеться передавать идентификатор глобального соединения во все модули, классы, функции, а это - геморой большой. Но я думаю, что если буду передавать этот идентификатора соединения, глюк исчезнет.  Он скорее и возник из-за не верной работы функций в случаи вызова их без идентификатора соединения.

Добавлено @ 16:50 
Сейчас проще заплатку оставить, чем создавать глобальную переменную и везде дописавыть
Код

global $conn;

неохота )
но за помощь tnks

PM MAIL   Вверх
Mal Hack
Дата 11.1.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 11
Всего: 261



Цитата(nIxOiD @  11.1.2007,  16:49 Найти цитируемый пост)
Если сделаю, придеться передавать идентификатор глобального соединения во все модули, классы, функции, а это - геморой большой.

Взял, посадил линк как свойство класса.
PM ICQ   Вверх
nIxOiD
Дата 11.1.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Mal Hack @  11.1.2007,  17:01 Найти цитируемый пост)
Взял, посадил линк как свойство класса.

сорри, что?
PM MAIL   Вверх
Mal Hack
Дата 11.1.2007, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 11
Всего: 261



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


 




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


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

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