2009-08-27 6 views
10

私はいくつかのスクリプトを使ってデータベースからいくつかのニュース記事を表示し、いくつかのことを見つけたかったPHP初心者です。より良いオプションmysql_connectまたはmysql_pconnectであるMySQLデータベースへの接続を開くためのどちらが良いですか:mysql_connectまたはmysql_pconnect

  • 永続的な接続をデータベースに使用する利点または欠点は何ですか?
  • どのようなシナリオで永続的な接続が呼び出されますか?
+2

重複したhttp://stackoverflow.com/questions/247807/mysqlconnect-vs-mysqlpconnect – Oskar

答えて

19

ウェブページを作成する場合は、永続的な接続は必要ありません。あまりにも多くのリソースが必要です。 mysql_connectを使用します。 db接続が開いている時間を最小限に抑え、可能な限り使用しないでください。開く、あなたが望むものを近づける、閉じる。ユーザーが読んでいる間は開いたままにする必要はありません。彼らが応答した場合、接続は最終的に使用されます - INSERTは/別のページに行く..

​​

に関するいくつかの良い点は、Webアプリケーションで持続的接続を使用していない

  • あなたがロック通常は接続が終了するとロックが解除されますが、永続的な接続が閉じないため、 が誤ってロックされたままのテーブルはロックされたままになり、 のロックを解除する唯一の方法は接続がタイムアウトするまで待つか、 プロセス。同じロック問題がトランザクションで発生します。 (23年04月2002年 コメントは下記を参照してください& 12 - 7月 - 2003年)

  • 接続が閉じたとき、通常、一時テーブルが削除されているが、持続的な接続を行うため、近くない、一時テーブルは ので、一時的ではありません。 が実行されたときに一時テーブルを明示的に削除しないと、そのテーブルは同じ接続を再利用する新しいクライアント用に既に存在します。同じ問題がセッション の変数を設定すると発生します。 PHPとMySQLは何の利点 はありません、その場合には、接続時間が無視できる、同じサーバーまたはローカルネットワーク上にある場合

  • (19 11月 - 2004年に以下のコメント& 07 - 8月-2006を参照してください)永続的な接続に。

  • Apacheは永続的な接続ではうまく動作しません。新しいクライアントからの要求を受け取った場合、すでに永続的な接続が開いている利用可能な子のうちの1つを使用するのではなく、 は新しい子を生成する傾向があり、新しいデータベース を開く必要があります。これはちょうど、眠っ 無駄なリソース、およびあなたがあなたの最大 接続に達したときにエラーが発生している余分なプロセスを引き起こし、それに加えて、永続的な接続のいずれかの利点を破ります。 (03年02月 - 2004以下のコメント、および http://devzone.zend.com/node/view/id/686#fn1の脚注を参照してください)

+1

通常、mysql_pconnectを使用する理由は、高価な操作をする必要がないようにWebアプリケーションを作成するときですレンダリングされたページごとにデータベースに接続する必要があります。 – nos

+0

と私は私の星座を読んでいる間私の接続を開いたままにする必要があります、私は別のページを求める1時間かかることがありますか? –

+0

ありがとう、みんな。それは私のために物事をはるかに明確にします。 – Kwame

1

あなたはまたmysqlipdoをご覧ください。 mysql-extensionはかなり古いもので、mysqliは準備した文をサポートしていません。また、pdoはクエリを変更せずに複数のデータベースをサポートしています。

-1

この質問にもう一度お答えください。他の場所で質問されました。上記のリンクを参照してください。

+4

これは答えではありませんが、コメントでなければなりません。 –

+2

マークダウンしてくれてありがとう:) –

+2

これは唯一正しいことだったので、私はそれをマークしました。 –

1

高負荷のサイトではmysql_pconnectを使用する必要があります。そのため、接続は再利用されます。これにより、最大2倍の速度が向上する可能性があります。

しかし、高負荷が予想されない場合は、上記のSvetlozar Angelovの理由で通常の接続を使用してください。

関連する問題