(php)mysql接続タイムアウト問題の解決.
1032 ワード
最近、phpがmysqlにデータを読み書きし、一日で仕事をしないという奇妙な問題に遭遇しました.ずっと解くことができなくて、指導のある日、mysql接続がタイムアウトするかもしれないと言われました.
Googleで見るとmysql connectionのデフォルトのタイムアウト時間は8時間です.その時、私はこの接続を永遠にタイムアウトしないようにしたいのですが、どうすればいいですか?
mysqlプロファイルmyでcfgで[mysqld]に追加
wait _timeout=3153600(ここでのこの数字の単位は秒、3153600秒=365日で、これも設定可能な最大値です)
この解決策は最高ではありません.この「一年」!=永久..接続をタイムアウトしないようにするにはどうすればいいですか?
それから、私はgoogleを続けます....
最後に私に必要な答えを見つけました.とても優雅な方法です.
その中のmysql_ping()は、接続が切断されたか否かを判断するために用いる、切断された場合は、現在のリンクを閉じ、新しい接続を再作成する.
これにより、接続が切断することを発見すれば、再接続することができる.
参照先:http://php.net/manual/en/function.mysql-ping.php
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