[PHP-users 23649] Re: MYSQLのToo many connectionsについて

Ryosuke Hosoi hosoi @ ryo.com
2004年 11月 17日 (水) 15:50:18 JST


ほそいです

From: "kohei-w" <kohei-w @ wd6.so-net.ne.jp>
Subject: [PHP-users 23645] MYSQLのToo many connectionsについて
Date: Wed, 17 Nov 2004 14:13:12 +0900
Message-ID: <200411170512.iAH5CmuC018974 @ mx06.ms.so-net.ne.jp>

> セッションにMYSQLのIDを入れて、セッションがない時だけコネクトすればと
> ひらめいたのですが、そもそもスクリプトが終わった時点で自動的にクローズされる
> ので、
> セッションに代入したIDではクエリーを行う際にエラーになってしまいました。

これはセッションが同じでもhttpdが同じである保証が全然ないので無理です

> 「Too many connections」対策がございましたら、教えて頂けませんでしょうか。
> 
> ちなみにサーバー会社に問い合わせた所、MYSQLの同時接続は100人に設定されて
> います。どうしても解決できなければサーバー会社にもう一度、接続人数の上限を変
>> してもうらようお願いしようと思うのですが、こちらで出来ることがあればまずはそ
> れを
> 試したいと想い、質問させて頂きました。

httpdの数がmysqlの同時接続数より多いのがだめなんですが、
php側でできる対策としては、接続できなかったらエラー表示
してあげる
--ここから--
$conn = @mysql_connect($host_name,$user_name,$pass_name);
if (!$conn) {
    header('HTTP/1.0 500 Server Error');
    echo 'DBに接続できなかったよ、ごめん。。。';
    exit;
}
--ここまで--
だとか、何度かリトライする
--ここから--
$try=0;
do {
    if ($try) sleep(1);
    $conn = @mysql_connect($host_name,$user_name,$pass_name);
    $try++;
    if ($try==5) {
        header('HTTP/1.0 500 Server Error');
	echo '結構頑張ってみたけど接続できないよ、ごめん。。。';
	exit;
    }
} while (!$conn);

--ここまで--
とかしかないかと。

-- 
 Ryosuke Hosoi / 細井 良祐
 mailto:hosoi @ ryo.com http://www.ryo.com/
 PGP Public Key http://www.ryo.com/ryo/hosoi.ryo.com.asc
 fingerprint = 4F39 61B0 2034 3A5C DFE8  FBCB 7B99 90CF EBE1 A3F3


PHP-users メーリングリストの案内