Snowflake / PHP + Rust

64 位唯一 ID在进程内生成

时间戳、数据中心、节点与序列号拼成一个整数,不经过数据库与中心协调节点。

雪花精灵,snowflake 的项目宠物

一个类,管住 ID 的整个生命周期

Snowflake 把当前毫秒、数据中心、工作节点与 12 位序列号压进一个 64 位整数,id() 全程在进程内完成。

核心只有一个有状态类,配合同一份配置文件与 PSR-11 工厂,原生 PHP 与六个框架共用同一种调用方式。

  • 41+5+5+12 位默认布局
  • 顺序、随机、Redis 序列策略
  • parseId 反解时间与节点
64-bitID 长度
4096每毫秒序列
6框架适配
雪花精灵 的 微笑 表情

雪花精灵

蓝白配色的雪花精灵,六条雪花臂环绕一张圆形笑脸,周围散落着星光与飘雪。

每一毫秒,都变成一个有序的 ID。

生成 ID 需要的都在一个类里

生成、回拨处理与反向解析,都由同一个类完成。

纯 PHP 零依赖

不需要扩展或外部服务,64 位整数运算全部由 PHP 完成。

可调位分配

时间戳、数据中心、节点与序列号的位数可按业务规模重排。

三种序列策略

顺序递增、随机起点与 Redis 共享计数器,也可实现接口自定义。

时钟回拨容忍

配置容忍窗口,超出后可等待墙钟追平或直接抛出异常。

ID 反向解析

parseId 把 ID 拆回时间戳、数据中心、节点与序列号。

六框架适配

Laravel、Webman、ThinkPHP、Hyperf、Yii2、Yii3 共用核心。

同一能力,Rust 版本

PHP 版本之外,也可以直接使用纯 std 零依赖的 Rust 实现。

Rust v2.1.0 Rust 1.88 / crate

snowflake-rust

Rust 版雪花 ID 生成器

把 64 位唯一 ID、可调位分配、三种序列策略与时钟回拨处理带给 Rust,核心零依赖。

  • 纯 std 零依赖
  • 三种序列策略
  • 八个框架适配
查看 Rust 仓库

从生成器到完整适配层

每个版本都对应一次真实发布。

v2.7.0

宠物形态与社交预览

12 种 ASCII 宠物形态进入 Mascot 类,终端可打印;新增 1280×640 社交预览图。

v2.6.0

雪花表情组重绘

重绘 12 种动态 SVG 表情,统一雪花精灵的造型、配色与动效。

v2.4.0

多语言文档同步

11 种语言的 README 与图表对齐当前英文版,修正多处声明漂移。

v2.3.0

静态分析与回拨等待

补齐 PHPStan level 8、PSR-11 工厂、Redis 序列策略与可等待的时钟回拨处理。

版本日志

最近的发布记录,完整列表在 GitHub Releases。

最新 v2.7.1 全部版本
v2.7.12026-10-19

同步宠物形态与社交预览文档,恢复宠物 180px 展示。

v2.7.02026-10-18

新增社交预览图,12 种 ASCII 宠物形态进入代码。

v2.6.12026-10-18

README 去除 HTML 标签,改用纯 Markdown。

v2.6.02026-10-18

重绘雪花表情组,统一 12 种动态 SVG。

v2.5.12026-10-18

为视觉资产保留商业权利声明。

v2.5.02026-09-29

13 种语言文档与图表同步 Yii2、Yii3 适配器。

安装与使用

先安装,再跑一个最小示例。

PHP >= 8.0 / 64 位系统完整 README
安装
composer require erikwang2013/snowflake-php
最小示例
use Erikwang2013\Snowflake\Snowflake;

$snowflake = new Snowflake(workerId: 5, datacenterId: 3);
$id = $snowflake->id();
$parsed = $snowflake->parseId($id);

echo $id;

雪花的十二种心情

鼠标停一停,它会换一种表情。

搜索本站

输入关键词,例如“上传”“迁移”“JWT”。