(php)mysql接続タイムアウト問題の解決.

1032 ワード

最近、phpがmysqlにデータを読み書きし、一日で仕事をしないという奇妙な問題に遭遇しました.ずっと解くことができなくて、指導のある日、mysql接続がタイムアウトするかもしれないと言われました.
Googleで見るとmysql connectionのデフォルトのタイムアウト時間は8時間です.その時、私はこの接続を永遠にタイムアウトしないようにしたいのですが、どうすればいいですか?
mysqlプロファイルmyでcfgで[mysqld]に追加
 
wait _timeout=3153600(ここでのこの数字の単位は秒、3153600秒=365日で、これも設定可能な最大値です)
 
この解決策は最高ではありません.この「一年」!=永久..接続をタイムアウトしないようにするにはどうすればいいですか?
 
それから、私はgoogleを続けます....
 
最後に私に必要な答えを見つけました.とても優雅な方法です.
 
    function reconnect(){
        if (!mysql_ping ($this->db)) {
            //here is the major trick, you have to close the connection (even though its not currently working) for it to recreate properly.
            mysql_close($this->db);
            $this->connect();
        }
    } 

その中のmysql_ping()は、接続が切断されたか否かを判断するために用いる、切断された場合は、現在のリンクを閉じ、新しい接続を再作成する.
これにより、接続が切断することを発見すれば、再接続することができる.
 
 
参照先:http://php.net/manual/en/function.mysql-ping.php