0

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

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

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

これの原因は何ですか?

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

4

2 に答える 2

1

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

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

さらに、php.ini でmysql.allow_persistentの設定を確認できます。

于 2012-05-12T16:10:34.557 に答える
1

新しい IP アドレスはどのように取得していますか? DNS (動的 DNS を含む) を使用している場合、古い DNS キャッシュにアクセスしていると思われます。90 秒を超える TTL のほとんどの動的 DNS エントリでさえ (また、一部の中間キャッシング サーバーは最小 TTL を設定する場合があります)。

于 2012-05-11T18:14:34.450 に答える