3

ページの最後で PHP の MySQL 接続を閉じるのは良いことでしょうか? 利点は何ですか?閉めても問題ないですか?

敬具、ジョーイ

4

5 に答える 5

2

いずれにせよ、PHP はスクリプトの最後ですべてのリソースを解放します。

たとえば、スクリプトはフォーム 1 で実行される可能性がありますが、スクリプトの最初の数ミリ秒だけファイルが必要になる場合があるため、ファイル リソースとファイルのロックを解放することをお勧めします。

最初に数ミリ秒 SQL を使用し、抽出されたデータに対してのみ処理を行う場合と同じ理由を使用します。接続を閉じることにより、別の接続が代わりに使用できるようになります (同時接続の数には MySQL の制限があります)。作る)。

一方、スクリプトの実行中に DB を (断続的に) 使用するため、スクリプトの最後でそれを解放すると、スクリプトの最後でとにかく PHP が行うことを実行することになります。

于 2012-08-04T12:05:23.997 に答える
2

永続的ではない開いているリンクはスクリプトの実行の最後に自動的に閉じられるため、mysql_close() を使用する必要は通常ありませんが、必要がなくなったらすぐにリソースを終了することを常に覚えておいてください。スクリプトがリソースを保持して長時間実行されている場合、リソースの枯渇に近づく必要はありません

于 2012-08-04T12:04:23.797 に答える
0

はい、使用後に接続を閉じることをお勧めします。これにより、データベースの負担が軽減されます。パフォーマンスが向上します。使用後は常にリソースを解放して、他のユーザーが使用できるようにする必要があります。

于 2012-08-04T12:03:59.037 に答える
0

永続的な接続を使用する場合: 一般に (99.99% の確率で) 永続的な接続を使用することはあまり (!) 賢明ではありません。確かに、トランザクションを使用する場合はそうではありません。リクエストごとに接続を開いたり閉じたりすることによるパフォーマンスの低下はそれほど大きくありません。

PHP の永続的な接続が悪い理由は...

  • これらは、MySQL のトランザクション、テーブル ロック、一時テーブル、セッション変数、およびその他の有用な機能のほとんどを非常に危険なものにし、ページ生成中にサーバー全体のデッドロックやデータベース エラーを引き起こす可能性があります。
  • それらは何百もの MySQL ソケットとスレッドを占有し、どこかで制限 (開いているファイル、mysql 設定、カーネル制限など) に達するリスクを高めます。
  • 永続的な接続が原因で何かが壊れた場合、特定のスレッドが特定の要求を特定の順序で処理した後にのみ表示されるため、診断が非常に難しいことは確かです。
  • Web サーバーのプールを使用すると、1 つの遅い Web サーバーがバックアップして、使用できないほど多くの接続を消費する可能性があるため、他のサーバーが接続を作成して要求を完了することができません。

たとえば、この記事を参照してください。

http://meta.wikimedia.org/wiki/Why_persistent_connections_are_bad

一般に、取得したすべてのリソースをできるだけ早く明示的に解放することも、プログラミングの良い方法です。これらのリソースは、競合するルーチンのスクリプトで使用できるからです。これを行うには、コンストラクタとデストラクタ (「スマート リソース」) を使用するのが良い方法です。PHP では、スクリプトが致命的なエラーで終了する可能性があります。その場合、スクリプトを自分で解放する機会がありません。

于 2012-08-04T12:55:15.650 に答える