wtyd Posted February 9, 2016 Собрались заюзать rlm_perl, пока до sql дело ещё не дошло, но есть вопросы по подключению к *sql из rlm_perl. Везде в примерах пишут, что надо использовать функцию CLONE(), в которой инициируется подключение к sql. AFAIK это будет работать так: создаётся новый поток (thread), в потоке создаётся своё собственное подключение, выполняется логика модуля, поток завершается, подключение к СУБД закрывается. Поток AFAIK создаётся на каждый новый запрос, соответственно снова подключаемся к СУБД и так далее. Нельзя ли как-то использовать одно или несколько постоянных подключений к СУБД чтобы не подключаться каждый раз ? Ну и чтобы радиус при обрыве соединения пытался его восстановить. Типа примерно как с rlm_sql обычно и происходит. Если можно, то покажите пример такого кода, буду очень рад :-). Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
wtyd Posted February 10, 2016 Наверное там всё же имелись ввиду threads самого радиуса. Т.е. запускается какое-то число тредов, например, 5-7, каждая из них делает своё подключение к СУБД и держит до завершения треды. Хотя это всё пока догадки :-). Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
~AsmodeuS~ Posted February 10, 2016 используйте connect_cached Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
wtyd Posted February 10, 2016 (edited) используйте connect_cached А по-подробнее можно ? Это фича перла или freeradius ? Что-то не очень гуглится для freeradius и perl. Вот так надо ?: ... our $dbh; ... sub CLONE { $dbh = DBI->connect_cached($data_source, $username, $password); } ... вместо "DBI->connect..." юзать "$dbh = DBI->connect_cached...", так ? Edited February 10, 2016 by wtyd Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
~AsmodeuS~ Posted February 10, 2016 да именно так 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 для наглядности Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
wtyd Posted February 10, 2016 да именно так 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 там нет. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
~AsmodeuS~ Posted February 10, 2016 не пробовал Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...