• [轉]資料庫讀寫分離


    From : http://blog.darkhero.net/archives/288

    當系統越來越大的時候…
    資料庫的負擔也會越來越大..這時候通常都會靠讀寫分離來讓系統更穩定. 讓資料庫更有效率…

    在 CakePHP 可以靠下面的設定輕鬆達到…

    database.php 的設定中..
    [code]<?php
    class DATABASE_CONFIG {

        public $default = array(
            'driver' => 'mysql',
            'persistent' => false,
            'host' => '192.160.1.110',
            'port' => '',
            'login' => 'root',
            'password' => '1234',
            'database' => 'cakephp',
            'schema' => '',
            'prefix' => '',
            'encoding' => 'UTF8'
        );
        
        public $master = array(
            'driver' => 'mysql',
            'persistent' => false,
            'host' => '192.168.1.100',
            'port' => '',
            'login' => 'root',
            'password' => '',
            'database' => 'cakephp',
            'schema' => '',
            'prefix' => '',
            'encoding' => 'UTF8'
        );
        
    }
    ?>[/code]
    先在 database 加入主要負責寫入的 master 主機…而一般負責讀取的主機就放在 default .

    然後在 app_model.php 加入下面的處理…
    [code]<?php
    class AppModel extends Model {
        function beforeSave() {
            $this->useDbConfig = 'master';
        }
        
        function afterSave() {
            $this->useDbConfig = 'default';
        }
        
        function beforeDelete() {
            $this->useDbConfig = 'master';
        }
        
        function afterDelete() {
            $this->useDbConfig = 'default';
        }
    }
    ?>
    [/code]

    這樣在實際執行的時候就會在寫入資料的時候自動切換到 $master 去進行寫入的動作了..

  • 相关阅读:
    高级程序员和普通程序员有哪些区别?
    自学编程需要注意什么?
    你是如何转行的?转行容易吗?
    什么是VueCLI3
    强制缓存和协商缓存有什么区别
    npm与package.json
    最高效的学习方法——逆向学习法
    html space空格符
    in typeof instanceof ===这些运算符有什么作用
    教你如何“快速”激活IntelliJ IDEA 工具
  • 原文地址:https://www.cnblogs.com/Athrun/p/php_db_read_write.html
Copyright © 2020-2023  润新知