ホームページ >php教程 >PHP开发 >Yii2 を使用してマスター/スレーブ データベース設定を実装する

Yii2 を使用してマスター/スレーブ データベース設定を実装する

高洛峰
高洛峰オリジナル
2016-12-12 09:52:401856ブラウズ

前書き

MySQL のマスターとスレーブの同期は、現在広く使用されているデータベース アーキテクチャであり、特に負荷の高い Web サイトの場合、マスターとスレーブの同期はデータベースの読み取りと負荷を効果的に軽減します。書き込み。以前に yii1 を使用していたときは、マスター/スレーブ データベースのサポートがあまり便利ではなく、複数の DB のコンポーネントを記述してから、AR の getDB で対応する DB を返すことしかできませんでした。これはマスター/スレーブデータベースを扱うためにも使用できます

実装方法

Yii2 はこの問題を解決し、コード内で直接処理できます:

PHP コード

'db' =>[
   'class' => 'yii\db\Connection',
  
  // 配置主服务器
  'dsn' => 'dsn for master server',
  'username' => 'master',
  'password' => '',
  'charset' => 'utf8',
  'tablePrefix' => 'php_',//默认为空
  
  // 配置从服务器
  'slaveConfig' => [
    'username' => 'slave',
    'password' => '',
    'charset' => 'utf8',
   'tablePrefix' => 'php_',
    'attributes' => [
      // use a smaller connection timeout
      PDO::ATTR_TIMEOUT => 10,
    ],
    
  ],
];

それはスーパーではありませんかそれだけでなく、スレーブ サーバー グループも設定できます。

PHP コード

'db'=>[
  //...上面是一些标准配置
  'slaves' => [
    ['dsn' => 'dsn for slave server 1'],
    ['dsn' => 'dsn for slave server 2'],
    ['dsn' => 'dsn for slave server 3'],
    ['dsn' => 'dsn for slave server 4'],
  ], 
]

さらに優れているのは、マスター サーバーも次のような複数のマスター サーバーの構成であることです。文字エンコーディングセット、テーブルプレフィックス 上記の設定を参照してください。

PHPコード

'db'=>[
  // 配置主服务器
  'masterConfig' => [
    'username' => 'master',
    'password' => '',
    'attributes' => [
      // use a smaller connection timeout
      PDO::ATTR_TIMEOUT => 10,
    ],
  ],
  
  // 配置主服务器组
  'masters' => [
    ['dsn' => 'dsn for master server 1'],
    ['dsn' => 'dsn for master server 2'],
  ],
  //other ...slaves
];

とても簡単です。

もちろん、もっと簡単に使いたい場合は、実際にはYII2のARを使う必要があります。コードを変更する必要はありません。 。


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