2016-08-10 4 views
0

まず、私はすでにいくつかの関連記事を見ましたが、運がありません。PHP Mysqlは〜60秒後に消えています

私が一番最初にこの値を設定MySQL server has gone away - in exactly 60 seconds で提供ソリューション続く:

ini_set('mysql.connect_timeout', 300); 
ini_set('default_socket_timeout', 300); 

を、エラーが持続ようです。

エラーは、クエリを実行する直前に発生します:mysql操作を処理するために使用されるデータベースクラスで、接続をリフレッシュするためにping(mysqli_ping)を実行しますが(mysql pingの使用の意味) 〜60には、この警告をスロー:

警告:mysqli_ping():MySQLのサーバは離れで行ってしまった...

は、私が行方不明何かはありますか?

更新済み 私は正確にどこに問題があるのか​​把握しました。

さらに私のワークフローについて説明します。 私は2つの異なるDB接続を確立します。まず、データを取得するためのものと、取得したすべてのデータを挿入するためのものです(行ごとに)。 2番目の接続が操作を実行しているため、私はそれがサーバーの稼働中のものだと思っていましたが、アイドル状態の接続(最初の接続)によってエラーが発生しています。

私が作成した回避策は、データが照会された直後に接続を終了することです(最初の接続は使用されなくなるため)。

2番目の接続には、タイムアウトに達しない時間があります。

最初の接続はリモートデータベースへの接続で、もう1つはローカルサーバーへの接続です。したがって、2番目の接続を完全に制御できます。

遠隔MySQLサーバーとの接続に奇妙なことは、私がPHPスクリプトから接続すると、60秒後にタイムアウトに達しますが、コンソールから接続すれば接続はタイムアウトしていません。私はそのタイムアウト(サーバーがなくなった)を取得できないようにどうすれば管理できますか知っていますか?上で述べたように、私はすでにこれを回避する方法がありますが、コンソールからは1時間ごとに接続を維持できるのに対し、PHPからは60秒後にタイムアウトが発生する理由を知りたいと思います。

+0

クエリ「SELECT @@ WAIT_TIMEOUT;」を実行します。デフォルトは28800ですが、60が表示されると思います。 –

答えて

3

クライアント接続の設定を変更するこれらの設定は、サーバーに関連しています。接続を閉じるサーバーです。 http://dev.mysql.com/doc/refman/5.7/en/gone-away.html http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_wait_timeout

ただ、もう一つ:あなたはmy.cnfの

ソースにwait_timeoutの値を変更する必要があり、この設定を変更するに変更、これはあなたができる最善のことではないかもしれません。最初にクエリを改善してみてください。

関連する問題