Перейти к содержимому
Калькуляторы

freeradius и rlm_perl как юзать persistent *sql соединение ?

Собрались заюзать rlm_perl, пока до sql дело ещё не дошло, но есть вопросы по подключению к *sql из rlm_perl. Везде в примерах пишут, что надо использовать функцию CLONE(), в которой инициируется подключение к sql. AFAIK это будет работать так: создаётся новый поток (thread), в потоке создаётся своё собственное подключение, выполняется логика модуля, поток завершается, подключение к СУБД закрывается. Поток AFAIK создаётся на каждый новый запрос, соответственно снова подключаемся к СУБД и так далее. Нельзя ли как-то использовать одно или несколько постоянных подключений к СУБД чтобы не подключаться каждый раз ? Ну и чтобы радиус при обрыве соединения пытался его восстановить. Типа примерно как с rlm_sql обычно и происходит. Если можно, то покажите пример такого кода, буду очень рад :-).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Наверное там всё же имелись ввиду threads самого радиуса. Т.е. запускается какое-то число тредов, например, 5-7, каждая из них делает своё подключение к СУБД и держит до завершения треды. Хотя это всё пока догадки :-).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

используйте connect_cached

 

А по-подробнее можно ? Это фича перла или freeradius ? Что-то не очень гуглится для freeradius и perl.

 

Вот так надо ?:

 

...
our $dbh;
...
sub CLONE {
      $dbh = DBI->connect_cached($data_source, $username, $password);
}
...

 

вместо "DBI->connect..." юзать "$dbh = DBI->connect_cached...", так ?

Изменено пользователем wtyd

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да именно так

 

 

 

http://abills.cvs.sourceforge.net/viewvc/abills/abills/Abills/mysql/main.pm?revision=1.2.2.25.2.147&view=markup&pathrev=rel-0-5

 

строки 71..75 для наглядности

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да именно так

 

 

 

http://abills.cvs.sourceforge.net/viewvc/abills/abills/Abills/mysql/main.pm?revision=1.2.2.25.2.147&view=markup&pathrev=rel-0-5

 

строки 71..75 для наглядности

 

Спасибо за пример. Не подскажете, как в случае с postgres бороться с ситуациями, в которых требуется reconnect к базе ? Метода reconnect там нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.