libfastcommon/doc/id_generator-Chinese.md

49 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 64位ID⽣成器说明
```
我们在libfastcommon中实现了64位 8字节整数 ID⽣成器针对PHP这样的多进程⽅式⽣成的64位ID也可以做到全局唯⼀。
提供的PHP扩展php-fastcommon封装了64位ID⽣成器。
64位ID⽣成规则⽣成的ID可以⼩于64位
32 位Unix时间戳 + X位机器ID + Y位extra data + Z位顺序号
其中 X + Y + Z <= 32
* 机器ID machine_id缩写为mid可以在初始化时指定如果设置为0表⽰获取本地IP地址的后X位作为机器ID
* extra data⽤来存储额外信息例如订单分库的库号。如果不需要这个特性将Y设置为0即可
* 顺序号sn会保存在本地⽂件中建议顺序号的位数Z⾄少为14其对应的最⼤数值为1638316K
```
## php-fastcommon扩展提供的4个PHP函数
```
resource fastcommon_id_generator_init([string $filename = "/tmp/fastcommon_id_generator.sn",
int $machine_id = 0, int $mid_bits = 16, int $extra_bits = 0, int $sn_bits = 16])
return resource handle for success, false for fail
* 这个函数只需要在初始化的时候调⽤⼀次即可,建议不同的实例采⽤不同的⽂件来保存序列号。
* php程序运⾏⽤户对这个⽂件必须有读写权限⽂件不存在会⾃动创建。
* 返回的resoure需要保存到php变量否则该初始化⼯作会⾃动撤销
```
```
long/string fastcommon_id_generator_next([int $extra = 0, resource $handle = null])
return id for success, false for fail
return long in 64 bits OS, return string in 32 bits OS
* 如果不需要存储额外信息, extra传0即可。
* 其中$handle参数为 fastcommon_id_generator_init返回值不传递该参数表⽰使⽤最后⼀次调⽤
```
```
fastcommon_id_generator_init 返回的handle。
int fastcommon_id_generator_get_extra(long id [, resource $handle = null])
return the extra data
* 使⽤了额外信息的情况下可以使⽤这个函数获取ID中包含的extra data
```
```
bool fastcommon_id_generator_destroy([resource $handle = null])
return true for success
* 这个函数通常不需要显式调⽤
```