ichthyandr Posted July 12, 2018 (edited) Всем привет. В freeradius 2 была такая ф-ция CLONE, в которой можно было инициализировать db коннектор. В freeradius 3 её , я так понял не стало. Вывернулся объявив: use vars qw(%RAD_REQUEST %RAD_REPLY %RAD_CHECK $db); ... sub DBCONN { if ( ! defined $db ){ $db = DBI->connect("dbi:mysql:dbname=".DB_NAME.";host=".DB_HOSTNAME, DB_USER, DB_PASS, {'RaiseError' => 1}); if ($DBI::err) { &ERROR("DB Connect Error. $DBI::errstr"); } else { &INFO("DB Connect Success"); } } } и вызываю DBCONN в каждой процедуре: authorize, accounting_start, accounting и т.д. Это есть правильно или надо както по другом? Спасибо Edited July 12, 2018 by ichthyandr Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted July 12, 2018 Попробуй вставить вывод в лог, типа if ( defined $db ) { debug_log("variable db has defined"); } else { $db = DBI->connect("dbi:mysql:dbname=".DB_NAME.";host=".DB_HOSTNAME, DB_USER, DB_PASS, {'RaiseError' => 1}); if ($DBI::err) { &ERROR("DB Connect Error. $DBI::errstr"); } else { &INFO("DB Connect Success"); } } Заодно и нам расскажешь. Но кмк, скрипт будет запускаться при каждом authorize, accounting, authen. Если оное определено. Могу ошибаться. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ichthyandr Posted July 12, 2018 31 минуту назад, pppoetest сказал: Попробуй вставить вывод в лог, типа if ( defined $db ) { debug_log("variable db has defined"); } else { $db = DBI->connect("dbi:mysql:dbname=".DB_NAME.";host=".DB_HOSTNAME, DB_USER, DB_PASS, {'RaiseError' => 1}); if ($DBI::err) { &ERROR("DB Connect Error. $DBI::errstr"); } else { &INFO("DB Connect Success"); } } Заодно и нам расскажешь. Но кмк, скрипт будет запускаться при каждом authorize, accounting, authen. Если оное определено. Могу ошибаться. оно работает, DBCONN вызывается и коннектор инициализируется один раз, но радиус иногда падает, что не очень хорошо. Как вариант объявить $db как our, но думаю сильно не поможет Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Kolunchik Posted July 12, 2018 Падает под какой нагрузкой? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ichthyandr Posted July 12, 2018 17 минут назад, Kolunchik сказал: Падает под какой нагрузкой? 1к сессий, количество постоянное, апдейт 5 мин Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Kolunchik Posted July 12, 2018 Спасибо. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ichthyandr Posted July 13, 2018 В 12.07.2018 в 15:28, pppoetest сказал: Попробуй вставить вывод в лог, типа if ( defined $db ) { debug_log("variable db has defined"); } else { $db = DBI->connect("dbi:mysql:dbname=".DB_NAME.";host=".DB_HOSTNAME, DB_USER, DB_PASS, {'RaiseError' => 1}); if ($DBI::err) { &ERROR("DB Connect Error. $DBI::errstr"); } else { &INFO("DB Connect Success"); } } Заодно и нам расскажешь. Но кмк, скрипт будет запускаться при каждом authorize, accounting, authen. Если оное определено. Могу ошибаться. Нашел косяк, perl под гентой собрался без тредов, оно потянуло сборку фрирадиуса без CLONE Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...