Я изменил сценарий mysql_
от Munin, так что функция do_connect
выглядит следующим образом:Почему Perl повторно использует одно и то же соединение MySQL в этом скрипте Munin?
sub db_connect {
my $dsn = "$config{dsn};mysql_socket=$config{mysqlsocket};mysql_connect_timeout=5;";
return DBI->connect($dsn, $config{user}, $config{password}, {
RaiseError => 1,
PrintError => 0,
FetchHashKeyName => 'NAME_lc',
});
}
Я настроил plugins-conf
установить различные значения для сокета отраженного в переменном окружении mysqlsocket
. Таким образом, каждый экземпляр имеет свое значение для env.mysqlsocket
. Когда я запускаю экземпляры с
$ for i in a b c; do munin-run mysql_${i}_innodb_rows; done
то первый, который соединяет (a
в таком порядке) открывает соединение, которое используется при последующих событиях, а не их гнезд. Строки подключения верны, они действительно меняются.
DBI->connect
не выполнен. Я могу доказать это, установив имена файлов сокетов в несуществующие файлы; он снова использует одно и то же соединение.
Интересно, поскольку это независимые процессы символического скрипта.
Как я могу заставить свой скрипт Perl открывать новое соединение?
@dorukayhan этого сценария Perl, а не PHP. – rexkogitans