ホームページ > バックエンド開発 > PHPチュートリアル > mysql_pconnect と mysql_connect の違いは何ですか?

mysql_pconnect と mysql_connect の違いは何ですか?

WBOY
リリース: 2016-06-23 14:19:45
オリジナル
1152 人が閲覧しました

MySQL データベース php

マニュアルには、主に 2 つの違いがあると書かれています
1. 接続リクエストを繰り返し発行しないでください
2. mysql_close が機能しません

最初の点は少しわかりません。それは、 mysql_connect が再度リクエストを発行しないか、途中で mysql_close を発行しない場合、 mysql_ pconnect と同じになるという意味ですか。

そうであれば

次に、関数を定義します

function connect(){
static $connect_id;
if(!$connect_id)
$connect_id = mysql_connect("localhost","hao" ,"hao") ;
Return $connect_id;

}
外部からこの関数を呼び出してデータベースに接続します。 connect()
接続リクエストが繰り返されることはありません。
それは mysql_pconnect と同じですか?

皆さんの回答を歓迎します ありがとうございます

ディスカッションに返信します (解決策)

resource mysql_connect ([ string $server [, string $username [, string $password [, bool $ new_link [, int $client_flags ]]]]] )

$new_link に true 値を指定しない場合、動作は同じです。同じパラメータを使用した 2 回目の呼び出しでは、新しい接続は確立されませんが、すでに開かれている接続識別子が返されます

それは、途中で別のリクエストや mysql_close を行わなくても、mysql_connect は mysql_pconnect と同じになるという意味ですか?

いいえ!

データベース接続は 2 つの段階に分かれています
第 1 段階: データベースサーバーとの物理接続を確立します
第 2 段階: データベースサーバーにログインし、データベースとのビジネスリンクを確立します

mysql_connect の場合、mysql_close が切断されますこれら 2 つの接続 (完了後に PHP プログラム mysql_close が自動的に呼び出されます)
mysql_pconnect の場合、mysql_close は機能しません。 PHP プログラムが終了すると、データベースへのビジネス リンクは自動的に切断されます。そして、物理接続を保持して再利用の準備をします

つまり、 mysql_connect が再度リクエストを発行しないか、途中で mysql_close を発行しない場合は、 mysql_ pconnect と同じになるという意味ですか。

いいえ!

データベース接続は 2 つの段階に分かれています
第 1 段階: データベースサーバーとの物理接続を確立します
第 2 段階: データベースサーバーにログインし、データベースとのビジネスリンクを確立します

mysql_connect の場合、mysql_close が切断されますこれら 2 つの接続 (完了後に PHP プログラム mysql_close が自動的に呼び出されます)
mysql_pconnect の場合、mysql_close は機能しません。 PHP プログラムが終了すると、データベースへのビジネス リンクは自動的に切断されます。物理的な接続を維持し、再利用に備えます

司会者 ご回答ありがとうございます。 mysql_pconnect の再利用の意味がまだよくわかりません。スクリプト間で再利用できるかどうか聞いてもいいですか?たとえば、スクリプト A は mysql_pconnect を使用し、スクリプト A が実行される前にスクリプト B が開かれます。これにより、スクリプト B はデータベースに再度接続することなく、スクリプト A の接続を使用できるようになります。

mysql_pconnect の利点は何ですか? 私はこれを使用しません。
あまり効果があるかは分かりません。


データベース接続は常に必要です

通常、ネットワーク接続は比較的遅いため、データベースへの物理的な接続が切断されなければ、次のアクセスは速くなります (最後の接続時のネットワーク チャネルが復元できた場合)使用)

長い接続は通常、Web サービスとデータベース サービスが同じマシン上にない状況で使用されます

説明したように、「スクリプト A が実行される前にスクリプト B が開かれる」ため、接続は再利用できません。再利用するには、接続がアイドル状態であることを意味します

データベース接続は常に必要です

通常、ネットワーク接続は比較的遅いため、データベースへの物理的な接続が切断されなければ、次のアクセスは高速になる可能性があります (上記の条件を満たす場合)最初の接続時のネットワーク チャネルは再利用できます)

長い接続は通常、Web サービスとデータベース サービスが同じマシン上にない状況で使用されます

あなたが説明した状況のように、「スクリプト A が実行される前にスクリプト B が開かれる」 , 接続がアイドル状態であることが再利用の前提条件であるため、接続を再利用することはできません

モデレーターありがとう、おそらく理解しました。
この文の理由をもう一度考える必要があります
一般に、Web サービスとデータベース サービスが同じマシン上にない場合、長い接続が使用されます

前に述べたように、同じマシン上にいない場合はネットワーク経由です
ネットワークは単独で使用するものではないため、実際の接続は比較的遅くなります。したがって、物理的な接続を維持する方がコスト効率が高くなります (接続後は放さないでください)
そして、同じコンピューター上にある場合は、ネットワークを経由する必要がないため、高速になります。逆に、長い接続はアイドル状態にする時間がないため、大量のリソースを占有し、データベースが接続できなくなります

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート