1

私は、mysql_* 関数を介した直接の mysql アクセスに依存する、古いが非常に複雑な php コードを使用しています。コードは mysql_ping を広範に使用しますが、接続がタイムアウトしたことが判明した場合に備えて、各 mysql_ping 呼び出しも再接続することを前提としています。問題は、MySQL 5.0 以降です。何かmysql_pingが自動的に再接続しません。ドキュメントでは、適切なフラグを指定して mysql_options を呼び出す必要があることがわかりましたが、mysql_optionsような関数はありません。代わりに mysqli_options がありますが、文字通り mysqli_* に切り替えることはできません。時間がかかりすぎます。MySQL のダウングレードも解決策とは見なされません。それを修正する方法はありますか?

ありがとう

4

1 に答える 1

8

PHPマニュアルを確認すると、db接続ステータスの処理に役立つ次のコードが見つかりました。

<?php

$conn = mysql_connect('localhost','user','pass');
mysql_select_db('db',$conn);

if (!mysql_ping ($conn)) {
//here is the major trick, you have to close the connection (even though its not currently working) for it to recreate properly.
   mysql_close($conn);
   $conn = mysql_connect('localhost','user','pass');
   mysql_select_db('db',$conn);
}

//run queries knowing that your connection is alive....

?>
于 2011-04-12T09:49:38.827 に答える