デフォルトの場合、MySQLサーバは8時間後に接続をクローズする。
 定期的にmysql_query()の実行に失敗するときは、これが原因の可能性が高い。
 詳しい解説はコチラ
 対策は、wait_timeout 変数の変更か、タイムアウト時に接続からやり直すかのどちらかかな・・・?
 wait_timeoutを変更するときは、
mysql> SET GLOBAL wait_timeout=88400;
とかでOK。
 変更されたかどうかは
mysql> SHOW GLOBAL VARIABLES;
でわかる。
 ただ、GLOBALを変えてもSESSIONの値は変わらないんだけど、GLOBALで上書きされてるのだろうか・・・。
 詳しくはMySQL全機能リファレンスの457p周辺を参照の事。
 MySQLサーバが再起動してもwait_timeoutの値を保持するようにするには、my.cnfのmysqldセクションに、
 wait_timeoutの設定を追加すればOK。
 ただし、mysql_real_connect()にてclient_flagにCLIENT_INTERACTIVEを指定すると、interactive_timeout秒経過したら接続をcloseする。うまくいかないときはこちらも併せて確認するとよい。
 http://dev.mysql.com/doc/refman/4.1/ja/mysql-real-connect.html
 ※追加調査
 4.1以降はこっちの方がわかりやすいかも?
 
 
コメントを残す