2012-05-11 17 views
0

リモートMySQLホストに接続してクエリを実行するスクリプトがあります。 しばらくすると、「MySQLサーバーがなくなった」というメッセージが表示されてハングします。 私は1日に少なくとも3回変化する動的IPを持っており、IPの変更時にハングすることに気付きました。ローカルIPの変更でPHPスクリプトがハングアップ

このエラーを検出するスクリプトを変更し、30〜90秒待ってからサーバーに再接続しましたが、再接続しようとするとハングします。

これは、LinuxとWindowsの両方で発生します。

この原因は何ですか?

編集:私はそれが明らかだと思ったが、変更されたIPはスクリプトが実行されているローカルIPであり、MySQLサーバは固定IPになっている。ローカルのPCはADSLルータに接続されており、私のISPは再接続(IP変更)を強制していると思います。 私は、IP変更時に既存の接続がすべて失われていることを認識しています。 MySQL、しかし、私はIP Changeで再接続しており、再接続に失敗したと言いました!

+2

あなたはすでにあなたの質問に答えています。 IPが変更されると、既存の接続はすべて失われます。 – Brad

+2

TCP接続(MySQLサーバーへの接続など)は、IP変更を超えても持続しません。 – eggyal

+0

ようこそStackOverflowへ!私たちは何が起こっているかを見ることができるようにいくつかのコードを示してください。 – Kaii

答えて

1

どのように新しいIPアドレスを取得していますか?あなたがDNS(ダイナミックDNSを含む)を使用している場合、私は古いDNSキャッシュを打っていると推測します。 90秒以上のTTLの最も動的なDNSエントリ(および一部の中間キャッシングサーバは、とにかく最小限のTTLを設定するかもしれません)。

+0

ここでDNSがどう重要なのか分かりません。接続するリモートサーバのIP(ドメイン名ではない)を使用しています。固定IPです –

+0

@ MarioLjubicicああ、申し訳ありませんが、私はあなたの編集を見て、変更する*クライアント* IPであることを明確にしています。元の質問を解釈して、* server * IPが変化していることを意味していました。あなたの質問を検索で見つけた人の利益のために、ここで私の回答を残すつもりです。 –

1

この動作の理由の1つは、永続的なデータベース接続です。このような場合には、IPアドレスが変更された場合に備えてApacheまたはIIS Webサーバーを再起動してください。再起動後にすべて正常に機能する場合は、それを取得します。

Persistent database connectionsはバックグラウンドで保存され、データベース接続のホスト名とユーザー資格情報が一致する場合に再利用されます。 mysqlライブラリでは、永続的な場合はmysql_pconnect、永続的な接続の場合はmysql_connectという違いがあります。

また、mysql.allow_persistentの設定についてphp.iniを確認することもできます。

+0

永続的な接続は有効ですが、永続的な接続は使用していません! –

関連する問題