Каковы преимущества использования DBIx :: Connector по сравнению с простой установкой mysql_auto_reconnect в 1? - PullRequest
5 голосов
/ 02 декабря 2011

При работе с постоянными MySQL-соединениями единственной проблемой является то, что они сбрасываются после определенного времени ожидания (обычно 28800 секунд). DBIx :: Connector, кажется, выполняет работу по автоматическому переподключению к разорванному соединению, но он добавляет больше кода Perl к каждому оператору SQL, что может раздражать. Например вместо:

    $dbh->do('DROP DATABASE stackoverflow');

Надо сказать:

    $conn->run(
        fixup => sub {
            my $dbh = shift;
            $dbh->do('DROP DATABASE stackoverflow');
        }
    );

Предположим, транзакции не нужны. Почему нужно использовать DBIx :: Connector вместо передачи $ dbh -> {mysql_auto_reconnect} = 1, что также хорошо работает?

1 Ответ

6 голосов
/ 02 декабря 2011
  1. DBIx :: Connector Заявленная цель состоит в том, чтобы обеспечить реализацию с защитой от ветвей и потоков DBI * connect_cached ().Таким образом, вы почти задаете вопрос о яблоках / апельсинах.

    Однако , DBIx :: Connector также повторно подключается , если соединение потеряно, когда оно работает влибо ping , либо fixup Режимы подключения .Обратите внимание, что по умолчанию используется режим no_ping , который, по-видимому, не пытается переподключиться.

  2. DBIx :: Connector будет работать с любым бэкэндом БД, а не только с MySQL.

Все сказано ... если вы используете MySQL и не заботитесь о других преимуществах DBIx :: Connector (потому что вы никогда не используете или не используете потоки),тогда mysql_auto_reconnect, вероятно, идеально подходит для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...