首页 » phpcode » PHP唯一ID生成模块 Ukey

PHP唯一ID生成模块 Ukey

 

Ukey是一个生成唯一ID的PHP扩展模块, 其安装Twitter的 Snowflake算法来生成ID, 所以效率非常高, 而且唯一性非常好.

Ukey的安装非常简单:

wget https://github.com/liexusong/ukey/archive/master.zip
$ unzip master.zip
$ cd ./ukey-master
$ phpize
$ ./configure
$ make
$ sudo make install

Ukey提供3个有用的函数:

ukey_next_id() 用于生成唯一ID
ukey_to_timestamp(ID) 用于将ID转换成时间戳
ukey_to_machine(ID) 用于将ID转换成机器信息
Ukey模块的配置项:

[ukey]
ukey.datacenter = integer
ukey.worker = integer
ukey.twepoch = uint64

datacenter配置项是一个整数, 用于设置数据中心;
worker配置项是一个整数, 用于设置数据中心的机器序号;
twepoch配置项是一个64位的整数, 用于设置时间戳基数, 此值越大, 生成的唯一ID越小.

遇到一个编译时的小问题。发生在php5.6.18版本上。编译出错:/ukey-master/php_ukey.h:75: 错误:与‘__uint64_t’类型冲突

出错原因是因为在/usr/include/bits/types.h:45: 附注:‘__uint64_t’的上一个声明在此

然后,简单处理了下 将

/ukey-master/php_ukey.h:75 行的 typedef unsigned long long int __uint64_t;替换成typedef unsigned long long int __uint64_t2;

将last_timestamp,twepoch的类型都替换成__uint64_t2即可,编译通过,可以正常使用

原文链接:PHP唯一ID生成模块 Ukey,转载请注明来源!

0