2009/12/22 joewu <[email protected]> > > > 2009/12/22 joe jiang <[email protected]> > > 这就是说,不应该在 auto handler 里面每次都 connect,而是应该在 connect 后加上 if undef $dbh. >> >> >> >> Chat Skype: joejiang799 MSN: [email protected] >> Contact Me [image: >> Linkedin]<http://cn.linkedin.com/pub/joe-jiang/12/552/940> [image: >> Flickr] <http://www.flickr.com/photos/40820...@n04> >> >> >> --- @ WiseStamp Signature <http://www.wisestamp.com/email-install>. Get >> it now <http://www.wisestamp.com/email-install> >> >> >> 2009/12/22 joewu <[email protected]> >> >>> >>> >>> 2009/12/22 Beckheng Lam <[email protected]> >>> >>>> $dbh=DBI->connect($dsn,$username,$password,\%conn_attrs); >>>> >>>> $dbh->disconnect(); >>>> >>>> 中间还有什么调用么? >>>> 有没有使用Apache::DBI? >>>> >>>> >>>> joewu wrote: >>>> >>>> >>>> >>>> 2009/12/22 joewu <[email protected]> >>>> >>>>> >>>>> >>>>> 2009/12/22 Beckheng Lam <[email protected]> >>>>> >>>>>> 会不会是代码里的问题,我以前初用MASON的时候,也遇到过这个情况。 >>>>>> 后来将$dbh改为全局变量就好了。开始的时候,将$dbh为局部变量,多个调用后,MYSQL链接数就激增了。 >>>>>> >>>>>> 会不会是你在某些代码里调用abort了?没有继续调用disconnect? >>>>>> >>>>>> >>>>>> joe jiang wrote: >>>>>> >>>>>> Apache 里面调用 DBI 的时候,关闭其实没有任何用的。因为这个 disconnect 被 override 了。 >>>>>> *$dbh是我在配置文件里设置的全局变量。代码如下: >>>>>> * >>>>>> >>>>>> PerlSetVar MasonAllowGlobals "$user $dbh" >>>>> >>>>>> ** >>>>>> Chat Skype: joejiang799 MSN: [email protected] >>>>>> Contact Me [image: >>>>>> Linkedin]<http://cn.linkedin.com/pub/joe-jiang/12/552/940> [image: >>>>>> Flickr] <http://www.flickr.com/photos/40820...@n04> >>>>>> >>>>>> >>>>>> --- @ WiseStamp Signature <http://www.wisestamp.com/email-install>. Get >>>>>> it now <http://www.wisestamp.com/email-install> >>>>>> >>>>>> >>>>>> 2009/12/22 joewu <[email protected]> >>>>>> >>>>>>> 在 最顶层的autohandler放置了链接方法代码如下: >>>>>>> my $dsn="DBI:mysql:vb:localhost"; >>>>>>> my $username='root'; >>>>>>> my $password='7232830'; >>>>>>> my %conn_attrs=(RaiseError=>1,PrintErros=>0,AutoCommit=>1); >>>>>>> $dbh=DBI->connect($dsn,$username,$password,\%conn_attrs); >>>>>>> >>>>>>> $dbh->disconnect(); >>>>>>> >>>>>>> 验证密码的模块 代码是 $m->comp('validate_password.mas',%ARGS)!=1 >>>>>>> >>>>>>> 然后不段的按 submit按钮,第一次没问题 第二次没问题 。但是一直按 下去 就会出现下面的 错误: >>>>>>> DBI connect('vb:localhost','root',...) failed: Too many connections >>>>>>> ; >>>>>>> >>>>>>> 奇怪的是 链接在autohander 已经关闭了 为什么还会出现这种情况呢? >>>>>>> 应该怎么解决啊? >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>> 算了下 几乎每次都是在连续按 50次这样子就出错了 >>>> >>>> -- >>>> >>>> >>>> -- >>>> Perl乐事 -- http://www.perlersh.org >>>> 我的博客 -- http://www.perlersh.org/blog.html >>>> 揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。 >>>> >>>> -- >>>> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 >>>> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >>>> 要取消订阅此网上论坛,请发送电子邮件至 >>>> [email protected]<perlchina%[email protected]> >>>> 。 >>>> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 >>>> >>> 其他是没有的,就是在autohandler里有如下的代码。 >>> my $dsn="DBI:mysql:vb:localhost"; >>> my $username='root'; >>> my $password='7232830'; >>> my %conn_attrs=(RaiseError=>1,PrintErros=>0,AutoCommit=>1); >>> $dbh=DBI->connect($dsn,$username,$password,\%conn_attrs); >>> >>> $dbh->disconnect(); >>> >>> 然后我是随便找一个页面的submit按的。这个页面没有其他的链接了。试了几次 几乎每次都是在连续按49-50次这样子出现问题 >>> >>> -- >>> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 >>> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >>> 要取消订阅此网上论坛,请发送电子邮件至 >>> [email protected]<perlchina%[email protected]> >>> 。 >>> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 >>> >> >> -- >> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 >> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >> 要取消订阅此网上论坛,请发送电子邮件至 >> [email protected]<perlchina%[email protected]> >> 。 >> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 >> > 高明!!!好 我去测试下!!
谢谢大家哦 。把这个判断加上去后哦if(!defined($dbh)) 。手指都按痛了 都没出现问题。谢谢哦 -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
