0

mysql接続に問題があります。

写真をアップロードするphpスクリプトがあります。このスクリプトは次のことを行います。


1) mysql connection
2) check user rights for uploading photo (I use a sql query for this)
3) Image processing
4) sql query for insering photo data in database
mysql接続タイムアウトを5秒に設定しました。

画像処理時間が5秒(mysql接続タイムアウト)未満の場合はすべてうまく機能します。それ以外の場合は、手順4)の実行時にエラーが発生し、エラーは「Mysqlサーバーがなくなりました」です。

そこで、画像処理後もmysql接続が有効であるかどうかを確認し、画像処理時間が5秒を超えるとmysql接続が切断されました。

画像処理後にこのコードを追加しました(ステップ3)


if(!mysql_ping($conn)){
$conn = mysql_connect('localhost', 'mysqluser', 'mypass');
$db   = mysql_select_db('mydb',$conn);
}

しかし、それは機能しません!これが私の本当の問題です。

var_dump($conn)
mysqlリソースリンクを提供しますが

mysql_select_db('mydb',$conn)
FALSEを返し、
mysql_error()
「mysqlサーバーがなくなりました」を返し

ます誰かが私を助けることができますか?

前もって感謝します。

4

2 に答える 2

0

http://dev.mysql.com/doc/refman/5.0/en/gone-away.htmlからの引用:

MySQLサーバーがなくなったというエラーの最も一般的な理由は、サーバーがタイムアウトして接続を閉じたことです。
[...]
MySQLサーバーのエラーがなくなったその他の一般的な理由は次のとおりです。
*あなた(またはdb管理者)がKILLステートメントまたはmysqladminkillコマンドを使用して実行中のスレッドを強制終了しました。
*サーバーへの接続を閉じた後にクエリを実行しようとしました。これは、修正が必要なアプリケーションの論理エラーを示しています。
*別のホストで実行されているクライアントアプリケーションには、そのホストからMySQLサーバーに接続するために必要な権限がありません。
*クライアント側のTCP/IP接続からタイムアウトが発生しました。これは、次のコマンドを使用している場合に発生する可能性があります:mysql_options(...、MYSQL_OPT_READ_TIMEOUT、...)またはmysql_options(...、MYSQL_OPT_WRITE_TIMEOUT、...)。この場合、タイムアウトを増やすと問題の解決に役立つ場合があります。
*サーバー側でタイムアウトが発生し、クライアントでの自動再接続が無効になっています(MYSQL構造の再接続フラグが0に等しい)。
* Windowsクライアントを使用していて、コマンドが発行される前にサーバーが接続を切断しました(おそらくwait_timeoutの有効期限が切れたため)。

于 2010-08-19T13:39:58.430 に答える
0

最初にタイムアウトを増やしてから、手順4の後で接続を閉じてください

mysql_close()

なぜタイムアウトを増やすのですか?画像処理には間違いなく5秒以上かかるため、この問題が発生します。

于 2010-08-19T13:45:31.247 に答える