Месяц: Декабрь 2011
Perl: DBI & MySQL — авто реконнект (reconnect)
Если вы программист на Perl и работаете с MySQL, то вот вам совет, как обеспечить коннект к серверу, и в тоже время, обеспечить себе легкую жизнь. Ведь если истечёт таймаут при работе с сервером, $dbh (database handle) будет не актуальным и выдаст ошибку. Особенно это актуально тогда, когда ваша программа работает с MySQL, и в то же время выполняет другие длительные операции, время которых может превысить таймаут-значение (connect timeout) MySQL. В такой ситуации ваш handle будет не актуальным.
Решение есть. Но в то же время есть ещё одна тонкость. DBB::mysql драйвер имеет опцию автореконнекта (mysql_auto_reconnect) и будет следить за актальностью handle и при случае переконнектится. Но вот что делать с коммандами, которые иногда надо выполнить сразу после коннекта, например SET NAMES ‘utf8’;SET CHARACTER SET ‘utf8’ ? И тут есть решение! Хотя найти его не всегда легко в интернет 🙂
Вообщем, вот код для коннекта из под Perl к MySQL так, чтобы всё работало пучком:
$dbh = DBI->connect( "dbi:mysql:database=database_name;mysql_client_found_rows=1;mysql_enable_utf8=1;mysql_socket=/socket_of_mysql", 'user', 'password',
{
RaiseError => 1,
AutoCommit => 1,
mysql_multi_statements => 1,
mysql_init_command => q{SET NAMES 'utf8';SET CHARACTER SET 'utf8'}
} ) or die "Cannot connect";
$dbh->{mysql_auto_reconnect} = 1;
Код проверен мною и тщательно протестирован
Советы будущим митингующим, ну или чтобы вы знали, на что идете
Полностью перепечатано с http://lady-spring.livejournal.com/75168.html
Автор: lady_spring
(на всякий случай, вдруг ЖЖ опять будет глючить)
ВСЕМ МИТИНГУЮЩИМ
Так. Вот сейчас очень серьезно.
На митинг в субботу придет больше 22 000 человек. Скорее всего, гораздо больше.
Слушайте внимательно. Читать далее Советы будущим митингующим, ну или чтобы вы знали, на что идете

![zxfypcsmiy1n[1]](https://blog.perlover.com/wp-content/uploads/2011/12/zxfypcsmiy1n1-e1323094641287.jpg)
![t5unc10h5a6i[1]](https://blog.perlover.com/wp-content/uploads/2011/12/t5unc10h5a6i1.jpg)