workbunny/mysql-protocol

The MySQL protocol implemented by PHP

0.0.2 2025-05-12 02:07 UTC

This package is auto-updated.

Last update: 2025-05-12 02:09:37 UTC


README

workbunny

workbunny/mysql-protocol

🐇 A PHP implementation of MySQL Protocol. 🐇

A PHP implementation of MySQL Protocol

安装

依赖

  • PHP >= 8.1
  • workerman >= 4.0 【可选,workerman环境】

安装

composer require workbunny/mysql-protocol

使用

Binary 二进制流

  • Binary提供了二进制流和字节组之间的互转能力(注:PHP是二进制安全语言)
  • Binary提供了基础的字节组读写操作能力,读写操作的指针相互隔离,读写指针默认从0位开始
  • payload支持传递字符串字节数组iterable类型的字节组null
use Workbunny\MysqlProtocol\Utils\Binary;

$binary = new Binary("workbunny");
# 输出字节组
$binary->unpack();
# 输出字符串(输入明文则返回明文,输入二进制数据则返回二进制)
$binary->pack();
# 输出原始负载
$binary->payload();

  • 默认以0位开始,每次操作都会递增相应字节位置
use Workbunny\MysqlProtocol\Utils\Binary;

$binary = new Binary("workbunny");

# 设置读取指针
$binary->setReadCursor();
# 获取读取指针
$binary->getReadCursor();

# 读取一个字节
$binary->readByte();
# 读取多个字节
$binary->readBytes();
# 读取一个整数(长度编码)
$binary->readLenEncInt();
# 读取一个字符串(长度编码)
$binary->readLenEncString();
# 读取一个无符号整数(长度编码)
$binary->readUB();
# 读取一个字符串(以NULL结束)
$binary->readNullTerminated();

  • 默认以0位开始,每次操作都会递增相应字节位置
use Workbunny\MysqlProtocol\Utils\Binary;

$binary = new Binary();

# 设置写指针
$binary->setWriteCursor();
# 获取写取指针
$binary->getWriteCursor();

# 写一个字节
$binary->writeByte();
# 写多个字节
$binary->writeBytes();
# 写一个整数(长度编码)
$binary->writeLenEncInt();
# 写一个字符串(长度编码)
$binary->writeLenEncString();
# 写一个无符号整数(长度编码)
$binary->writeUB();
# 写一个字符串(以NULL结束)
$binary->writeNullTerminated();

Packet 协议包

  • Packet提供了MySQL协议基础的二进制包数据的解析与封装能力
  • Packet提供PacketInterface自定义实现
  • 默认13种Packet覆盖了常见MySQL交互动作