pixelfederation/vitess-php-pdo

该软件包已被废弃,不再维护。未建议替代软件包。

适用于 Vitess PHP 客户端的 PHP PDO 兼容驱动程序。

0.3.2 2017-11-08 10:42 UTC

README

此库提供了一个用于 Vitess 的 PDO 驱动程序。它不是 PDO PHP 扩展的驱动程序,而是一个纯 PHP 实现的 PDO 接口。如果没有在应用程序代码中检查 instanceof \PDO,则它可以与原始 PDO 类互换。

当前状态

目前代码处于测试版质量,并非所有 PDO 方法和类都已实现,但它已在我们的应用程序中进行了测试并且运行正常。欢迎每个人提交 pull request 来实现一些缺失的功能。

此外,单元测试目前绑定到我们的 Vitess 开发实例,有计划进行更改。文档还很少,但由于有人请求驱动程序,所以我们决定开源。

此驱动程序与任何官方 MySql/MariaDB 管理工具都不兼容,但我们创建了一个 Adminer 分支,您可以使用它来了解您的 Vitess 集群中的数据。

使用方法

用于 PDO 实现的 Vitess PHP 客户端依赖于 PHP GRPC 扩展,该扩展必须与 GRPCProtobuf 一起安装。

要安装 composer 软件包,请运行以下命令

composer require pixelfederation/vitess-php-pdo

在安装依赖项后,PDO 类应按以下方式实例化

$pdo = new \VitessPdo\PDO("keyspace={$keyspace};host={$host};port={$port}");
  • $keyspace: Vitess keyspace(数据库名称的替代品)
  • $host: Vtgate 的 IP 或主机名
  • $port: Vtgate 端口

如果您想使用有限的 DDL 支持,则必须按以下方式实例化 PDO 实例

$pdo = new \VitessPdo\PDO("vitess:cell={$cell};keyspace={$keyspace};host={$host};port={$port};vtctld_host={vtcrld_host};vtctld_port={vtctld_port}");
  • $cell: Vitess 单元的名称
  • $vtctld_host: Vtctld 的 IP 或主机名
  • $vtctld_port: Vtctld 端口

仅支持有限的 DDL 查询子集(实现的目标是使 PDO 驱动程序与 Adminer 兼容)。

贡献

如果您想贡献,我们强烈建议从项目目录运行以下命令

./bin/setup-dev

这将设置一个提交钩子,它使用 PHPCS 检查 PSR/2 编码标准,并运行 PHP linter 和 PHP Mess Detector PHPMD

要能够运行单元测试,您现在需要在本地上安装 Vitess(有针对 Ubuntu 和 OS X 的指南)。

测试需要从设置好所有环境变量的 shell 中运行,以准备好运行 Vitess 实例。设置环境变量后,只需转到库根目录并运行以下命令

./bin/phpunit

如果需要在新建的单元测试中执行任何SQL查询,tests/vitess/schema文件夹提供了一个数据库模式。该模式包含两个分片 - lookupuser

已知问题

在OS X上,当前GRPC版本(0.13)和PHP GRPC扩展(0.8)(这两个版本对PDO驱动和Vitess都是强制性的)存在“有时”问题,意味着对Vitess的GRPC请求会稍微慢一点,原因未知。Linux不受影响。

此外,目前还没有PHP 7 GRPC扩展。

这两个问题已在grpc 1.0.0RC1和1.0.0RC2中得到解决,该扩展现在应该稳定了。