mysql:3271
From: "岩田 雅人" <"岩田 雅人" <iwata@xxxxxxxxxx>>
Date: Fri, 16 Feb 2001 09:52:53 +0900
Subject: [mysql 03271] コネクション
岩田です、初心者ですので宜しくお願い致します!
データベースから読み込んだ値をブラウザで表示しているのですが
プログラムでは…
:
$dbh = DBI->connect('DBI:mysql:database1','admin','admin')
or die "Could'nt connect to database: " . DBI->errstr;
$sth = $dbh->prepare('select * from db1')
or die "Could'nt prepare statement: " . $dbh->errstr;
$sth->execute;
$db1_data = $sth->fetchrow();
$sth->finish;
if(エラーの場合) {
エラー表示処理関数Error_html()
}
:
html表示処理
:
$dbh->disconnect;
エラー表示処理関数
Error_html {
:
html表示処理
:
}
とほとんどのPGはこのような処理をしています。しかし、条件式でhtml表示を分
けて処理する場合、最後にdisconnectせずに処理を終わっています。しかし通っ
てしまい、エラー表示されます。
一応通ってしまうのでこのままでいたのですが、disconnectしていないため
このコネクションのプロセスがいつまでも残ってしまうため、エラーを起こして
しまいます。しかもDBへアクセスする処理をしているプログラムは全てエラー
になってしまいました。エラー症状を発生させることができないためエラー内容
がコネクションのプロセスが原因なのかわかりません。
サーバーをrebootしたところ残っていたコネクションは消えて正常に戻りまし
た。
今は、エラー処理の場合もdisconnectして終了するようにし、コネクションは
残らなくなったのですが。まれにコネクションのプロセスが残ってしまいます。
この先もし、コネクションのプロセスが残って同じよう
なことがあった場合、対処法としてrebootしか方法はないのでしょうか?
サーバーはLinux、使ってるCGI言語はperl 5.005です。