ホームページ  >  記事  >  バックエンド開発  >  phpにはデータベース接続プールがありますか?

phpにはデータベース接続プールがありますか?

王林
王林オリジナル
2019-10-10 11:52:315327ブラウズ

phpにはデータベース接続プールがありますか?

php-cp (php-connect-pool) は、PHP 拡張機能で作成されたデータベース接続プールです。

1. 市場にある他のオープン ソース データベース ミドルウェア製品とは異なります。

1. 個別の導入は必要ありません。クラスタは、アプリケーション サーバー上で実行されるプロキシ プロセスであり、外部依存関係の層が削減され、アーキテクチャがよりシンプルでクリーンで信頼性が高くなります。

2. パフォーマンスが高く、ネットワーク送信が 1 つ削減され、効率的な IPC を通じて PHP プロセスと通信し、プロトコル解析の消費を回避します。

3. Redis と mysql を同時にサポートするため、2 つの別々のミドルウェア システムをデプロイする必要はありません。

2. 簡単な回路図

phpにはデータベース接続プールがありますか?

##3. 技術的特徴

1. 接続の最大数と最小数の構成をサポートします。

2. 低圧による接続の自動回復をサポートします (強度と頻度は設定可能)。

3. スムーズな再起動をサポートします。

4. 接続枯渇のキューイングメカニズムをサポートします。

5.mysql と redis の両方をサポートします。

6. 使い方は簡単で、フレームワークを簡単に統合した後 (新しいメソッドを変更する)、既存のビジネスはコードを 1 行も変更することなく接続プールを使用できます。

7. get_disable_list 関数は、使用できないダウンタイム IP のリストを取得するために提供されているため、クライアントでも負荷分散を実行できます (構成ファイル内のすべての IP とダウンタイム IP を区別し、その後ランダムにできます)。

btw: lvs を使用することもできますが、lvs 転送ではシステム アーキテクチャへの依存関係が生じます。DR モードではネットワーク セグメントを越えることができず、拡張が制限されます。バックエンド データベースに問題がある場合、唯一できるのは、 LvのVIPを知っています。

8. 接続プール プロセスは、ダウンタイム リストを監視するために ping プロセスを開始します。利用可能な場合は、get_disable_list 関数の戻り値に反映されます。

9. 多数の最適化が行われていますが、リクエストは接続プールのプロセス転送を通過しますが、基本的に QPS の損失はありません。

4. 使用方法

1. pool.ini ファイルを /etc/ に配置し、必要に応じて内部の設定を変更します。

2. エージェント プロセスの開始

./pool_server start

「開始」「停止」「再起動」「リロード」コマンドのサポート

3. PHP スクリプトの変更

$db = new PDO(xxxxx);
修改成  $db = new pdo_connect_pool(xxxx);//dont use persistent
$redis = new Redis();
修改成 $redis = new redis_connect_pool();//dont use pconnect

ヒント:

$db/$redis->release() をできるだけ早く呼び出して、このプロセスによって占有されている接続をプールに解放します。

推奨チュートリアル: PHP ビデオ チュートリアル

以上がphpにはデータベース接続プールがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。