ichthyandr Опубликовано 12 июля, 2018 (изменено) · Жалоба Всем привет. В 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 и т.д. Это есть правильно или надо както по другом? Спасибо Изменено 12 июля, 2018 пользователем ichthyandr Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 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. Если оное определено. Могу ошибаться. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ichthyandr Опубликовано 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, но думаю сильно не поможет Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Kolunchik Опубликовано 12 июля, 2018 · Жалоба Падает под какой нагрузкой? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ichthyandr Опубликовано 12 июля, 2018 · Жалоба 17 минут назад, Kolunchik сказал: Падает под какой нагрузкой? 1к сессий, количество постоянное, апдейт 5 мин Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Kolunchik Опубликовано 12 июля, 2018 · Жалоба Спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ichthyandr Опубликовано 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...