PHP Класс Doctrine\DBAL\Connections\MasterSlaveConnection

Connection can be used with master-slave setups. Important for the understanding of this connection should be how and when it picks the slave or master. 1. Slave if master was never picked before and ONLY if 'getWrappedConnection' or 'executeQuery' is used. 2. Master picked when 'exec', 'executeUpdate', 'insert', 'delete', 'update', 'createSavepoint', 'releaseSavepoint', 'beginTransaction', 'rollback', 'commit', 'query' or 'prepare' is called. 3. If master was picked once during the lifetime of the connection it will always get picked afterwards. 4. One slave connection is randomly picked ONCE during a request. ATTENTION: You can write to the slave with this connection if you execute a write query without opening up a transaction. For example: $conn = DriverManager::getConnection(...); $conn->executeQuery("DELETE FROM table"); Be aware that Connection#executeQuery is a method specifically for READ operations only. This connection is limited to slave operations using the Connection#executeQuery operation only, because it wouldn't be compatible with the ORM or SchemaManager code otherwise. Both use all the other operations in a context where writes could happen to a slave, which makes this restricted approach necessary. You can manually connect to the master at any time by calling: $conn->connect('master'); Instantiation through the DriverManager looks like:
Автор: Lars Strojny ([email protected])
Автор: Benjamin Eberlei ([email protected])
Наследование: extends Doctrine\DBAL\Connection
Показать файл Открыть проект Примеры использования класса

Защищенные свойства (Protected)

Свойство Тип Описание
$connections Doctrine\DBAL\Driver\Connection[] Master and slave connection (one of the randomly picked slaves).
$keepSlave boolean You can keep the slave connection and then switch back to it during the request if you know what you are doing.

Открытые методы

Метод Описание
__construct ( array $params, Doctrine\DBAL\Driver $driver, Doctrine\DBAL\Configuration $config = null, Doctrine\Common\EventManager $eventManager = null ) Creates Master Slave Connection.
beginTransaction ( ) {@inheritDoc}
close ( ) {@inheritDoc}
commit ( ) {@inheritDoc}
connect ( $connectionName = null ) {@inheritDoc}
createSavepoint ( $savepoint ) {@inheritDoc}
delete ( $tableName, array $identifier, array $types = [] ) {@inheritDoc}
exec ( $statement ) {@inheritDoc}
executeUpdate ( $query, array $params = [], array $types = [] ) {@inheritDoc}
insert ( $tableName, array $data, array $types = [] ) {@inheritDoc}
isConnectedToMaster ( ) : boolean Checks if the connection is currently towards the master or not.
prepare ( $statement ) {@inheritDoc}
query ( ) {@inheritDoc}
releaseSavepoint ( $savepoint ) {@inheritDoc}
rollBack ( ) {@inheritDoc}
rollbackSavepoint ( $savepoint ) {@inheritDoc}
update ( $tableName, array $data, array $identifier, array $types = [] ) {@inheritDoc}

Защищенные методы

Метод Описание
chooseConnectionConfiguration ( string $connectionName, array $params ) : mixed
connectTo ( string $connectionName ) : Doctrine\DBAL\Driver Connects to a specific connection.

Описание методов

__construct() публичный Метод

Creates Master Slave Connection.
public __construct ( array $params, Doctrine\DBAL\Driver $driver, Doctrine\DBAL\Configuration $config = null, Doctrine\Common\EventManager $eventManager = null )
$params array
$driver Doctrine\DBAL\Driver
$config Doctrine\DBAL\Configuration
$eventManager Doctrine\Common\EventManager

beginTransaction() публичный Метод

{@inheritDoc}
public beginTransaction ( )

chooseConnectionConfiguration() защищенный Метод

protected chooseConnectionConfiguration ( string $connectionName, array $params ) : mixed
$connectionName string
$params array
Результат mixed

close() публичный Метод

{@inheritDoc}
public close ( )

commit() публичный Метод

{@inheritDoc}
public commit ( )

connect() публичный Метод

{@inheritDoc}
public connect ( $connectionName = null )

connectTo() защищенный Метод

Connects to a specific connection.
protected connectTo ( string $connectionName ) : Doctrine\DBAL\Driver
$connectionName string
Результат Doctrine\DBAL\Driver

createSavepoint() публичный Метод

{@inheritDoc}
public createSavepoint ( $savepoint )

delete() публичный Метод

{@inheritDoc}
public delete ( $tableName, array $identifier, array $types = [] )
$identifier array
$types array

exec() публичный Метод

{@inheritDoc}
public exec ( $statement )

executeUpdate() публичный Метод

{@inheritDoc}
public executeUpdate ( $query, array $params = [], array $types = [] )
$params array
$types array

insert() публичный Метод

{@inheritDoc}
public insert ( $tableName, array $data, array $types = [] )
$data array
$types array

isConnectedToMaster() публичный Метод

Checks if the connection is currently towards the master or not.
public isConnectedToMaster ( ) : boolean
Результат boolean

prepare() публичный Метод

{@inheritDoc}
public prepare ( $statement )

query() публичный Метод

{@inheritDoc}
public query ( )

releaseSavepoint() публичный Метод

{@inheritDoc}
public releaseSavepoint ( $savepoint )

rollBack() публичный Метод

{@inheritDoc}
public rollBack ( )

rollbackSavepoint() публичный Метод

{@inheritDoc}
public rollbackSavepoint ( $savepoint )

update() публичный Метод

{@inheritDoc}
public update ( $tableName, array $data, array $identifier, array $types = [] )
$data array
$identifier array
$types array

Описание свойств

$connections защищенное свойство

Master and slave connection (one of the randomly picked slaves).
protected Connection[],Doctrine\DBAL\Driver $connections
Результат Doctrine\DBAL\Driver\Connection[]

$keepSlave защищенное свойство

You can keep the slave connection and then switch back to it during the request if you know what you are doing.
protected bool $keepSlave
Результат boolean