# 唯一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);
    }

}