前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用 PHP 实现的 MySQL 协议库

用 PHP 实现的 MySQL 协议库

作者头像
Tinywan
发布2025-06-08 18:45:24
发布2025-06-08 18:45:24
2900
代码可运行
举报
文章被收录于专栏:开源技术小栈开源技术小栈
运行总次数:0
代码可运行

概述

workbunny/mysql-protocol 是一个用 PHP 实现的 MySQL 协议库,提供了处理 MySQL 协议数据包的功能,可用于开发与 MySQL 服务器交互的客户端、代理或服务器等应用程序。

依赖

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

安装

代码语言:javascript
代码运行次数:0
运行
复制
composer require workbunny/mysql-protocol

使用

Binary 二进制流

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

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

  • 默认以0位开始,每次操作都会递增相应字节位置
代码语言:javascript
代码运行次数: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位开始,每次操作都会递增相应字节位置
代码语言:javascript
代码运行次数: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交互动作
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 依赖
  • 安装
  • 使用
    • Binary 二进制流
    • Packet 协议包
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档