纯 PHP 零依赖
不需要扩展或外部服务,64 位整数运算全部由 PHP 完成。
Snowflake 把当前毫秒、数据中心、工作节点与 12 位序列号压进一个 64 位整数,id() 全程在进程内完成。
核心只有一个有状态类,配合同一份配置文件与 PSR-11 工厂,原生 PHP 与六个框架共用同一种调用方式。
蓝白配色的雪花精灵,六条雪花臂环绕一张圆形笑脸,周围散落着星光与飘雪。
每一毫秒,都变成一个有序的 ID。生成、回拨处理与反向解析,都由同一个类完成。
不需要扩展或外部服务,64 位整数运算全部由 PHP 完成。
时间戳、数据中心、节点与序列号的位数可按业务规模重排。
顺序递增、随机起点与 Redis 共享计数器,也可实现接口自定义。
配置容忍窗口,超出后可等待墙钟追平或直接抛出异常。
parseId 把 ID 拆回时间戳、数据中心、节点与序列号。
Laravel、Webman、ThinkPHP、Hyperf、Yii2、Yii3 共用核心。
PHP 版本之外,也可以直接使用纯 std 零依赖的 Rust 实现。
Rust 版雪花 ID 生成器
把 64 位唯一 ID、可调位分配、三种序列策略与时钟回拨处理带给 Rust,核心零依赖。
每个版本都对应一次真实发布。
12 种 ASCII 宠物形态进入 Mascot 类,终端可打印;新增 1280×640 社交预览图。
重绘 12 种动态 SVG 表情,统一雪花精灵的造型、配色与动效。
11 种语言的 README 与图表对齐当前英文版,修正多处声明漂移。
补齐 PHPStan level 8、PSR-11 工厂、Redis 序列策略与可等待的时钟回拨处理。
点击图片放大查看。
先安装,再跑一个最小示例。
composer require erikwang2013/snowflake-phpuse Erikwang2013\Snowflake\Snowflake;
$snowflake = new Snowflake(workerId: 5, datacenterId: 3);
$id = $snowflake->id();
$parsed = $snowflake->parseId($id);
echo $id;cargo add snowflake-id-rustuse snowflake::Snowflake;
let mut snowflake = Snowflake::default();
let id = snowflake.id()?;
println!("{id}");鼠标停一停,它会换一种表情。