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 访问此网上论坛。


回复