http://www.oschina.net/p/ukey
使用Twitter的 Snowflake算法, 有兴趣可以了解一下这个算法: https://github.com/twitter/snowflake
php.ini的配置项:
1 | [ukey] |
2 | ukey.datacenter = integer |
3 | ukey.worker = integer |
4 | ukey.twepoch = uint64 |
- datacenter配置项是一个整数, 用于设置数据中心;
- worker配置项是一个整数, 用于设置数据中心的机器序号;
- twepoch配置项是一个64位的整数, 用于设置时间戳基数, 此值越大, 生成的ID越小;
安装:
1 | $ cd ./ukey |
2 | $ phpize |
3 | $ ./configure |
4 | $ make |
5 | $ sudo make install |
Ukey提供3个有用的函数:
- ukey_next_id() -- 用于生成唯一ID
- ukey_to_timestamp(ID) -- 用于将ID转换成时间戳
- ukey_to_machine(ID) -- 用于将ID转换成机器信息
使用实例:
01 | <?php |
02 | $id = ukey_next_id(); |
03 | echo $id ; |
04 |
05 | $timestamp = ukey_to_timestamp( $id ); |
06 | echo date ( 'Y-m-d H:i:s' , $timestamp ); |
07 |
08 | $info = ukey_to_machine( $id ) |
09 | var_dump( $info ); |
10 | ?> |
PHP unique ID generator — More...
Issues | |
#1 | PHP服务重启后。获得ID连不上了。 |