- 论坛徽章:
- 0
|
大家好,请教个perl连接mysql断开后的问题,程序的代码如下:
- #!perl
- use DBI;
- $dbh = DBI->connect(
- "DBI:mysql:test_db:127.0.0.1:3306",
- "username",
- "password" ) or die "Connection Failed.\n";
- $behavior = $dbh->prepare("select * from test_table");
- $behavior->execute;
- print "@$line\n" while $line = $behavior->fetchrow_arrayref;
- system 'netstat -n';
- $dbh->disconnect;
复制代码 这个程序会先输出查询结果,然后输出程序运行时的netstat -n结果,当时netstat部分结果为:
- Proto Local Address Foreign Address State
- TCP 127.0.0.1:3306 127.0.0.1:3732 ESTABLISHED
- TCP 127.0.0.1:3732 127.0.0.1:3306 ESTABLISHED
复制代码 这个结果是正常的,但是当程序结束后,一段时间之内,netstat -n的结果都会是如下情形:
- Proto Local Address Foreign Address State
- TCP 127.0.0.1:3732 127.0.0.1:3306 TIME_WAIT
复制代码 我感觉比较难以理解的是DBI的$dbh->disconnect可以正确的让mysql服务器关闭连接,为什么它不能让自己正确的关闭连接?
在程序退出后,我关掉mysql服务,但是这个连接还在,这应该不是网上很多人说的mysql超时问题吧?请问这个问题有没有什么解决办法?
环境为Windows+ActivePerl. |
|