2017-03-31 9 views
1

私はPDOの永続的な接続を使用するように切り替えました。 MySQLが正しく接続されていない(非アクティブなため)PDOが接続を終了せず、キャッシュに接続を保持し、その時点から接続結果を使用しようとする状況が発生しました失敗したPDOは永続接続を閉じますか?

この動作は「設計上の問題」です(PDOは永続的な接続をサポートしないようになっているようです)。

いずれにしても、PDOがの場合、はプール内の接続を閉じるかどうかを知りたいと思います。私はそれが接続の状態をチェックしていないが、タイマーや定期的なクリーンアップ、設定可能かハードコーディングがあるのですか?

+0

データベースへの接続を維持したい場合は、PHPで手動で接続にpingを実行する必要があります。 MySQLが非アクティブな接続を閉じる時刻は、MySQLの設定で変更することができます –

+0

あなたはどういうエラーメッセージを受け取るのですか? –

+0

@ YourCommonSense閉じられた接続を使用しようとしたときのエラーは、「MySQLサーバーがなくなった」のようなものです。 – obe

答えて

1

接続の永続性を心配する必要はありません。

ウェブページを構築する場合は、接続がタイムアウトするまでに時間がかかります。

長時間にわたりデータベースに触れていない長時間実行しているアプリケーションを使用している場合は、コードの再配置や再オープン、またはクローズと再オープンを発見することを検討してください。

多くの理由で接続が切断される可能性があることに注意してください。その多くは、ネットワークの不具合に関連しています。したがって、あなたのアプリケーションは、「永続的」であると主張されているかどうかにかかわらず、閉じられた接続から回復する準備ができている必要があります。

「接続プーリング」は、クライアント・ライブラリ内の「プロキシ・サーバー」内の多くのレベルで処理されます。彼らはすべて違った行動をします。

接続プーリングはそれほど有用ではありません。私が追い払った事実上すべてのパフォーマンスの問題は、ではなく、が接続を確立するのにかかる時間と関係があります。

他のRDBMSベンダーは接続時間がひどく遅く、業界では接続プーリングと永続的接続を実現しています。しかし、MySQLにはそのような必要性はほとんどありません。

接続を閉じるトリガーがいくつかあります。あなたはDBA/SE/Cloudプロバイダがどのような値に設定されているかを知っています。

PDOは多くのレイヤーの1つにすぎないので、あなたの質問は狭すぎます。私はより広い答えを提供してくれることを願っています。

+1

私は努力と詳細を感謝しますが、それは実際に私の質問に答えません(特定のPDOの動作(または不足)について)。いくつかの注意点:SSLを有効にすると、MySQL接続にはかなりの時間がかかります。PDO永続接続に切り替えることで必要なエッジが得られ、アーキテクチャーを変更するよりも好ましいビジネス状況が存在すると主張しています。 – obe

+0

正常に処理エラーについて:ランダムなイベント(いくつかのエラーメッセージをユーザーに戻すだけで、さまざまな理由で再接続することが望ましい場合もあります)と、必然的にこれらのエラーが必然的に発生することの間には違いがあります(基本となるライブラリが定期的に接続をリセットしないからです)。 – obe

関連する問題