UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。
其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。
在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前最广泛应用的UUID,是微软公司的全局唯一标识符,而其他重要的应用,则有Linux ext2/ext3文件系统、LUKS加密分区、GNOME、KDE、Mac OS X等等。另外我们也可以在e2fsprogs包中的UUID库找到实现。
使用UUID的好处是,能够保证独立性,程序可以在不同的数据库间迁移,效果不受影响。 保证生成的ID不仅是表独立的,而且是库独立的,这点在在切分数据库的时候尤为重要。而缺点,变是~长
CENTOS7 下安装 UUID,需要先安装几个库
yum -y install uuid uuid-devel e2fsprogs-devel libuuid-devel
然后在官网下载 http://pecl.php.net/package/uuid 进行编译安装,我下载的是 uuid-1.0.4.tgz 的
wget -c http://pecl.php.net/get/uuid-1.0.4.tgz
tar -zxvf uuid-1.0.4.tgz
cd uuid-1.0.4
# 因为我的PHP 是装在 exec 下,具体看各人自已的环境
/opt/php/exec/bin/phpize
./configure --with-php-config=/opt/php/exec/bin/php-config
make && make install
装完在 php.ini 里导入 extension=uuid.so
<?php
# 调用
echo uuid_create(1)
完整实现
function UUID(){
$uuid = '';
if (function_exists('uuid_create') === true){
$uuid = uuid_create(1);
}else{
$data = openssl_random_pseudo_bytes(16);
$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
$uuid = vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
return $uuid;
}

网友评论