まず、私はすでにいくつかの関連記事を見ましたが、運がありません。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秒後にタイムアウトが発生する理由を知りたいと思います。
クエリ「SELECT @@ WAIT_TIMEOUT;」を実行します。デフォルトは28800ですが、60が表示されると思います。 –