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