Jump to content
Калькуляторы

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

 

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

Edited by wtyd

Share this post


Link to post
Share on other sites

да именно так

 

 

 

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 для наглядности

Share this post


Link to post
Share on other sites

да именно так

 

 

 

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 там нет.

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.