# 唯一id(雪花算法)
云静系统提供的生成全局唯一id的方法,同一毫秒最多允许生成id数4096个。
使用示例如下:
$id = snowflake_next_id();
dump($id); // 输出:7041906706795724801
若要对雪花算法进行独立的设置,可监听事件Snowflake
,并定义事件监听类
配置文件app/event.php
内容如下:
return [
'listen' => [
'Snowflake' => [
"app\\event\\listen\\Snowflake" // 名称可根据自身业务进行调整
],
],...
];
事件监听类app\\event\\listen\\Snowflake
内容如下:
namespace app\event\listen;
use yunj\library\snowflake\Snowflake as YunjSnowflake;
class Snowflake {
public function handle(YunjSnowflake $snowflake) {
// 如果允许lua脚本运行,可调用setLua()方法,表示lua脚本可用
$snowflake->setLua();
// 可设置数据中心id,范围 0-31。默认0
$snowflake->setDataCenterId(0);
// 可设置机器id,范围 0-31。默认0
$snowflake->setMachineId(0);
// 可设置开始毫秒时间戳。默认1577836800000 注意:一旦确定则不能再改变
$snowflake->setMachineId(1577836800000);
}
}