.ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録

.検索

.メインメニュー

.フォーラムメニュー

.オンライン状況
9 人のユーザが現在オンラインです。 (8 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 9

もっと...

.
.リンク集

メイン
   一般的な話題(General)
     CakePHPで超簡単スケーラビリティ
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
news
投稿日時: 2007-4-14 21:43
Cake 職人
登録日: 2007-4-4
居住地:
投稿: 1277
CakePHPで超簡単スケーラビリティ
「マスターとスレーブのMYSQLサーバがあります。レプリケーション機能で、マスターからスレーブにデータが常にコピーされています。データの更新・追加はマスターに対して行い、データの検索はスレーブで、という場合にはどうすればよいでしょうか?」

答えは、笑ってしまうほど簡単です。
フレームワークを使った開発ならでは、ですね。

Replication load balancing support?
http://groups.google.com/group/cake-php/browse_thread/thread/58ea010f930fab6c/
news
投稿日時: 2007-5-29 12:55
Cake 職人
登録日: 2007-4-4
居住地:
投稿: 1277
Re: CakePHPで超簡単スケーラビリティ
bakeryで同じような記事が投稿されています。

Load Balancing and MySQL Master and Slaves
By Toby Cox aka "eagerterrier"
http://bakery.cakephp.org/articles/view/load-balancing-and-mysql-master-and-slaves-2


<?php
function beforeSave() { 
    
$this->useDbConfig 'master'
    return 
true;


function 
afterSave() { 
    
$this->useDbConfig 'default'
    return 
true;


function 
beforeDelete() { 
    
$this->useDbConfig 'master'
     return 
true;


function 
afterDelete() { 
    
$this->useDbConfig 'default'
     return 
true;
}
?>



という簡単なコードです。なお、サーバを指定してSQLを発行する例も掲載されています。
wtr
投稿日時: 2007-10-30 17:16
Baker スタート
登録日: 2007-10-30
居住地:
投稿: 3
Re: CakePHPで超簡単スケーラビリティ
CakePHP 1.1.17.5612 で確認しましたが、このように

function beforeSave(){
    $this->useDbConfig = 'master';
    return true;
}

trueを返しておかないとダメみたいです。接続先はmasterに変わりましたが、なぜか保存に失敗して小一時間はまりました。
news
投稿日時: 2009-1-21 11:03
Cake 職人
登録日: 2007-4-4
居住地:
投稿: 1277
Re: CakePHPで超簡単スケーラビリティ
これまでの方法はdeprecatedになったそうです。
じゃあ、1.2でどうやるのか、という記事です。

Master / Slave support (also with multiple slave support)
By Andreas Hofmann (gman.php)
http://bakery.cakephp.org/articles/view/master-slave-support-also-with-multiple-slave-support

save()とupdateAll()の時には、

<?php
function save($data null$validate true$fieldList = array())
{
  
// Remember the old config
  
$oldDb $this->useDbConfig;
  
// Set the new config
  
$this->setDataSource('master');
  
// Call the original Model::save() method
  
$return parent::save($data$validate$fieldList);
  
// Reset the config/datasource
  
$this->setDataSource($oldDb);

  return 
$return;
}
?>


などとし、__construct()の中では、


<?php
$_useDbConfig 
$slaves[rand(0count($slaves) - 1)];
?>



としています。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 


. .