CakePHP+Mysql热备来实现读写分离

Standard
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
//database.php
class DATABASE_CONFIG {
 
    public $Master = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => '192.160.0.1',
        'port' => '',
        'login' => 'root',
        'password' => '123456',
        'database' => 'yemaosheng_com',
        'schema' => '',
        'prefix' => '',
        'encoding' => 'UTF8'
    );
 
    public $Slave1 = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => '192.168.0.2',
        'port' => '',
        'login' => 'root',
        'password' => '123456',
        'database' => 'yemaosheng_com',
        'schema' => '',
        'prefix' => '',
        'encoding' => 'UTF8'
    );
 
    public $Slave2 = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => '192.168.0.3',
        'port' => '',
        'login' => 'root',
        'password' => '123456',
        'database' => 'yemaosheng_com',
        'schema' => '',
        'prefix' => '',
        'encoding' => 'UTF8'
    );
 
    public $Slave3 = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => '192.168.0.4',
        'port' => '',
        'login' => 'root',
        'password' => '123456',
        'database' => 'yemaosheng_com',
        'schema' => '',
        'prefix' => '',
        'encoding' => 'UTF8'
    );
}
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
//app_model.php
class AppModel extends Model {
    function beforeSave() {
        $this->useDbConfig = 'Master';
    }
 
    function afterSave() {
        $this->useDbConfig = 'Slave'.mt_rand(1,3);
    }
 
    function beforeDelete() {
        $this->useDbConfig = 'Master';
    }
 
    function afterDelete() {
        $this->useDbConfig = 'Slave'.mt_rand(1,3);
    }
}
?>

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.