0

これはよくある問題のようで、よく検索しましたが、状況に対する解決策が見つかりませんでした。mysql_auto_reconnect と connect_cached を試しましたが、役に立ちませんでした。これは基本的に私がここに持っているコードです。mysql サーバーは、アイドル状態が 30 秒続くと接続を閉じます。mysql_auto_reconnect は、サーバーから最初に $dbh->disconnect (コードでコメント) したときにのみ機能します。connect_cached メソッドはここで機能しますが、while ループで connect_cached メソッドを使用すると「接続が失われました」というメッセージが表示されます。

  my $dbh = DBI->connect_cached($mysql_data_source, $mysql_username, $mysql_passwd, {'RaiseError' => 1});
  $dbh->{AutoInactiveDestroy} = 1;
  $dbh->{mysql_auto_reconnect} = 1;
  print strftime('%F %T', localtime());
  print "\n";
  #$dbh->disconnect();
  sleep 30; 
  $dbh = DBI->connect_cached($mysql_data_source, $mysql_username, $mysql_passwd, {'RaiseError' => 1});
  print strftime('%F %T', localtime());
  my $sql = "some sql";
  my $hashref = $dbh->selectall_hashref($sql, "id");
  my $info_hashref = $dbh->{mysql_dbd_stats};
  print Dumper($info_hashref);
  print Dumper($hashref); 

何か考えはありますか?

4

1 に答える 1