PHP code example of indievox / master-slave-db-access

1. Go to this page and download the library: Download indievox/master-slave-db-access library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

indievox / master-slave-db-access example snippets


composer 


use iNDIEVOX\MasterSlaveDBAccess\MasterSlaveDBAccess;


$db_config = array(
    "database_server" => array(
        "master"=>array(
            "db_host"=>'localhost', // change to your master host
            "db_name"=>'homestead', // change to your master database name
            "db_user"=>'root',      // change to your master database username
            "db_password"=>''       // change to your master database password
        ),
        "slave1"=>array(
            "db_host"=>'localhost', // change to your slave host
            "db_name"=>'homestead', // change to your slave database name
            "db_user"=>'root',      // change to your slave database username
            "db_password"=>''       // change to your slave database password
        ),
        "slave2"=>array(
            "db_host"=>'localhost', // change to your slave host
            "db_name"=>'homestead', // change to your slave database name
            "db_user"=>'root',      // change to your slave database username
            "db_password"=>''       // change to your slave database password
        )
    ),
    "slave_database_name" => array(
        'slave1',
        'slave2'
    )
);



$db_obj = MasterSlaveDBAccess::getInstance($db_config);



$select_sql = "SELECT id, email FROM user WHERE id=:id ";
$param = array(
    ":id" => '1'
);
$query_result = $db_obj->selectCommand($select_sql, $param);

foreach ($query_result as $query_result_data) {
    echo $query_result_data["id"];
    echo $query_result_data["email"];
}



MasterSlaveDBAccess::forceSwitchMaster();

$select_sql = "SELECT id, email FROM user WHERE id=:id ";

$param = array(
    ":id" => '1'
);

// select query, but use master only this time
$query_result = $db_obj->selectCommand($select_sql, $param);

foreach ($query_result as $query_result_data) {
    echo $query_result_data["id"];
    echo $query_result_data["email"];
}

$select_sql = "SELECT id, email FROM user WHERE id=:id ";

$param = array(
    ":id" => '1'
);

// select query, auto switch to slave(read)
$query_result = $db_obj->selectCommand($select_sql, $param);

foreach ($query_result as $query_result_data) {
    echo $query_result_data["id"];
    echo $query_result_data["email"];
}


use iNDIEVOX\MasterSlaveDBAccess\MasterSlaveDBAccess;

$db_config = array(
    "database_server" => array(
        "master"=>array(
            "db_host"=>'localhost',
            "db_name"=>'homestead',
            "db_user"=>'root',
            "db_password"=>''
        ),
        "slave1"=>array(
            "db_host"=>'localhost',
            "db_name"=>'homestead',
            "db_user"=>'root',
            "db_password"=>''
        ),
        "slave2"=>array(
            "db_host"=>'localhost',
            "db_name"=>'homestead',
            "db_user"=>'root',
            "db_password"=>''
        )
    ),
    "slave_database_name" => array(
        'slave1',
        'slave2'
    )
);

// init conneciton, use slave(read) connection
$db_obj = MasterSlaveDBAccess::getInstance($db_config);

$insert_sql = "INSERT INTO user ".
    "(id, path, is_deleted, create_time, modify_time, delete_time) ".
    "VALUES ".
    "(:id, :path, :is_deleted, :create_time, :modify_time, :delete_time);";

$param = array(
    ":id"           => '1',
    ":path"         => 'fukuball',
    ":is_deleted"   => '0',
    ":create_time"  => '2016-12-30 00:00:00',
    ":modify_time"  => '2016-12-30 16:12:18',
    ":delete_time"  => '0000-00-00 00:00:00'
);

// insert query, auto switch to master(write)
$insert_id = $db_obj->insertCommand($insert_sql, $param);

$select_sql = "SELECT * FROM user WHERE id=:id ";

$param = array(
    ":id" => '1'
);

// select query, auto switch to slave(read)
$query_result = $db_obj->selectCommand($select_sql, $param);

foreach ($query_result as $query_result_data) {
    echo $query_result_data["id"];
    echo $query_result_data["email"];
}

$update_sql = "UPDATE user SET path='fukuball-lin' WHERE id=:id ";

$param = array(
    ":id" => '1'
);

// update query, auto switch to master(write)
$affected_rows = $db_obj->updateCommand($update_sql, $param);

$delete_sql = "DELETE FROM user WHERE id=:id ";

$param = array(
    ":id" => '1'
);

// delete query, auto switch to master(write)
$affected_rows = $db_obj->deleteCommand($delete_sql, $param);



// init conneciton, use slave(read) connection
$db_obj = MasterSlaveDBAccess::getInstance($db_config);

// switch to master
MasterSlaveDBAccess::forceSwitchMasterWholeContext();

$select_sql = "SELECT * FROM user WHERE id=:id ";

$param = array(
    ":id" => '1'
);

// select query, but use master
$query_result = $db_obj->selectCommand($select_sql, $param);

$insert_sql = "INSERT INTO user ".
    "(id, path, is_deleted, create_time, modify_time, delete_time) ".
    "VALUES ".
    "(:id, :path, :is_deleted, :create_time, :modify_time, :delete_time);";

$param = array(
    ":id"           => '2',
    ":path"         => 'punkball',
    ":is_deleted"   => '0',
    ":create_time"  => '2016-12-31 00:00:00',
    ":modify_time"  => '2016-12-31 16:12:18',
    ":delete_time"  => '0000-00-00 00:00:00'
);

// insert query, use master
$insert_id = $db_obj->insertCommand($insert_sql, $param);

$select_sql = "SELECT * FROM user WHERE id=:id ";

$param = array(
    ":id" => '2'
);

// select query, but use master
$query_result = $db_obj->selectCommand($select_sql, $param);