3

したがって、次のエラーが発生します。

Error Number: 2006
MySQL server has gone away

これは、スクリプトの実行に数億分かかり、スクリプトの途中でさらに多くのクエリが実行されるためです。これが管理者専用の巨大なファイル作成スクリプトであることを考えると、これは予想されることです。(そして完全に受け入れられます)PHP / MySQL /何かがそれを開いたままにしていないので、MySQL接続が閉じられていると思います。ただし、このタイムアウトの発生を停止する方法を一生理解することはできません。

PHPスクリプトの上部に次のものがありますが、役に立たないようです。

ini_set('default_socket_timeout', -1);
ini_set('max_execution_time', -1);
ini_set('memory_limit', -1);
ini_set('mysql.connect_timeout', -1);

この問題を解決する方法はありますか?ありがとう!

4

1 に答える 1

7

実行可能なオプションは、mysql_connect電話をかける前に毎回行うことだと思いますmysql_query。これにより、すべてのクエリの前にライブ接続が確立されます。

ただし、はるかに優れたアプローチは、最初に接続ステータスを確認してから、必要に応じて再接続することです。mysql_ping接続状態の確認に便利ですので、再接続が必要かどうかを確認できます。@galadorの回答にあるサンプルコード。

@diolemoと@galadorに感謝します。

于 2012-05-17T17:01:23.187 に答える