plasma/driver-mysql

Plasma的MySQL/MariaDB驱动程序。

v0.4.0 2021-02-28 14:58 UTC

This package is auto-updated.

Last update: 2024-08-29 05:00:17 UTC


README

Plasma提供了一个异步、非阻塞(数据访问)数据库抽象层。这是Plasma的MySQL/MariaDB驱动程序。

驱动程序使用ReactPHP异步与数据库服务器接口。

驱动程序支持通过驱动程序选项设置连接字符集,需要注意的是默认值是utf8mb4(UTF-8),这是一个你应该一直使用的字符集。

还应注意的是,支持FOUND_ROWS标志的MySQL版本,在使用StreamQueryResultInterface::getAffectedRows()SELECT查询时,可以返回非零值。

入门

您可以使用composer安装此组件。命令是

composer require plasma/driver-mysql

使用composer安装组件及其依赖项后,您可以通过创建工厂实例来开始。

工厂接受一个循环实例和一个选项数组(有关可用选项,请参阅工厂类文档)。

工厂还允许您使用react/filesystem异步与文件系统接口,如果发生LOCAL INFILE请求。

此外,如果您数据库服务器使用的是该驱动程序(尚未)不支持的认证插件,您可以创建自己的认证插件。

use Plasma\Client;
use Plasma\Drivers\MySQL\DriverFactory;
use React\EventLoop\Factory;

$loop = Factory::create();

$factory = new DriverFactory($loop, array());
$client = Client::create($factory, 'user:password@localhost:3306/database', array());

// Code which uses the client to run queries against the database

$loop->run();

Unix套接字连接支持使用unix://方案,因此示例连接URI将如下所示。

unix://user:password@localhost/database

在没有数据库的情况下使用Unix套接字连接时,需要尾部斜杠。当使用localhost作为Unix套接字路径时,将使用默认mysql路径。

游标

MySQL从5.7版本开始支持游标(MariaDB 10.3)。因此,驱动程序将拒绝5.7以下版本的MySQL,或者MariaDB 10.3版本,因为它们不支持游标(尽管能力可能表明相反)。

如果在驱动程序方法调用时已知,则驱动程序将抛出LogicException,或者推迟它并使用LogicException拒绝承诺。

压缩

默认启用数据包压缩,所有等于或大于50字节的包都会自动压缩(只要zlib可用)。可以使用compression.enable标志禁用它。

服务器OK响应消息

驱动程序通过名为serverOkMessage的Plasma客户端事件公开服务器上的每个OK响应消息数据包。参数是Messages\OkResponseMessage的实例。

因此,高级用户可以检查服务器状态并执行某些操作,或者只是将其记录下来以进行纯粹统计目的。

类型扩展

此驱动程序使用名为driver-mysql的类型扩展管理器。在解码从数据库接收到的行时,类型扩展可以解码两种不同类型的值,具体取决于使用的协议。

当使用文本协议(常规查询)时,类型扩展将原始值作为字符串获取。

但是,当使用二进制协议(预编译语句)时,类型扩展将获取使用的\Plasma\BinaryBuffer实例。必须谨慎使用。读取过多可能导致丢失行,因为剩余的字段无法正确解码。

文档

https://plasmaphp.github.io/driver-mysql/