120 lines
3.5 KiB
PHP
120 lines
3.5 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Safe;
|
||
|
|
||
|
use Safe\Exceptions\MysqlndMsException;
|
||
|
|
||
|
/**
|
||
|
* Returns a list of currently configured servers.
|
||
|
*
|
||
|
* @param mixed $connection A MySQL connection handle obtained from any of the
|
||
|
* connect functions of the mysqli,
|
||
|
* mysql or
|
||
|
* PDO_MYSQL extensions.
|
||
|
* @return array FALSE on error. Otherwise, returns an array with two entries
|
||
|
* masters and slaves each of which contains
|
||
|
* an array listing all corresponding servers.
|
||
|
*
|
||
|
* The function can be used to check and debug the list of servers currently
|
||
|
* used by the plugin. It is mostly useful when the list of servers changes at
|
||
|
* runtime, for example, when using MySQL Fabric.
|
||
|
*
|
||
|
* masters and slaves server entries
|
||
|
* @throws MysqlndMsException
|
||
|
*
|
||
|
*/
|
||
|
function mysqlnd_ms_dump_servers($connection): array
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \mysqlnd_ms_dump_servers($connection);
|
||
|
if ($result === false) {
|
||
|
throw MysqlndMsException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* MySQL Fabric related.
|
||
|
*
|
||
|
* Switch the connection to the nodes handling global sharding queries
|
||
|
* for the given table name.
|
||
|
*
|
||
|
* @param mixed $connection A MySQL connection handle obtained from any of the
|
||
|
* connect functions of the mysqli,
|
||
|
* mysql or
|
||
|
* PDO_MYSQL extensions.
|
||
|
* @param mixed $table_name The table name to ask Fabric about.
|
||
|
* @return array FALSE on error. Otherwise, TRUE
|
||
|
* @throws MysqlndMsException
|
||
|
*
|
||
|
*/
|
||
|
function mysqlnd_ms_fabric_select_global($connection, $table_name): array
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \mysqlnd_ms_fabric_select_global($connection, $table_name);
|
||
|
if ($result === false) {
|
||
|
throw MysqlndMsException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* MySQL Fabric related.
|
||
|
*
|
||
|
* Switch the connection to the shards responsible for the
|
||
|
* given table name and shard key.
|
||
|
*
|
||
|
* @param mixed $connection A MySQL connection handle obtained from any of the
|
||
|
* connect functions of the mysqli,
|
||
|
* mysql or
|
||
|
* PDO_MYSQL extensions.
|
||
|
* @param mixed $table_name The table name to ask Fabric about.
|
||
|
* @param mixed $shard_key The shard key to ask Fabric about.
|
||
|
* @return array FALSE on error. Otherwise, TRUE
|
||
|
* @throws MysqlndMsException
|
||
|
*
|
||
|
*/
|
||
|
function mysqlnd_ms_fabric_select_shard($connection, $table_name, $shard_key): array
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \mysqlnd_ms_fabric_select_shard($connection, $table_name, $shard_key);
|
||
|
if ($result === false) {
|
||
|
throw MysqlndMsException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Returns an array which describes the last used connection from the plugins
|
||
|
* connection pool currently pointed to by the user connection handle. If using the
|
||
|
* plugin, a user connection handle represents a pool of database connections.
|
||
|
* It is not possible to tell from the user connection handles properties to which
|
||
|
* database server from the pool the user connection handle points.
|
||
|
*
|
||
|
* The function can be used to debug or monitor PECL mysqlnd_ms.
|
||
|
*
|
||
|
* @param mixed $connection A MySQL connection handle obtained from any of the
|
||
|
* connect functions of the mysqli,
|
||
|
* mysql or
|
||
|
* PDO_MYSQL extensions.
|
||
|
* @return array FALSE on error. Otherwise, an
|
||
|
* array which describes the connection used to
|
||
|
* execute the last statement on.
|
||
|
*
|
||
|
* Array which describes the connection.
|
||
|
* @throws MysqlndMsException
|
||
|
*
|
||
|
*/
|
||
|
function mysqlnd_ms_get_last_used_connection($connection): array
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \mysqlnd_ms_get_last_used_connection($connection);
|
||
|
if ($result === false) {
|
||
|
throw MysqlndMsException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|