UUID 是 通用唯一識(shí)別碼(Universally Unique Identifier)的縮寫鸵钝,是一種軟件建構(gòu)的標(biāo)準(zhǔn)谒麦,亦為開(kāi)放軟件基金會(huì)組織在分布式計(jì)算環(huán)境領(lǐng)域的一部分妹卿。
其目的小染,是讓分布式系統(tǒng)中的所有元素,都能有唯一的辨識(shí)信息稿茉,而不需要通過(guò)中央控制端來(lái)做辨識(shí)信息的指定。如此一來(lái)芥炭,每個(gè)人都可以創(chuàng)建不與其它人沖突的UUID漓库。
在這樣的情況下,就不需考慮數(shù)據(jù)庫(kù)創(chuàng)建時(shí)的名稱重復(fù)問(wèn)題园蝠。目前最廣泛應(yīng)用的UUID渺蒿,是微軟公司的全局唯一標(biāo)識(shí)符,而其他重要的應(yīng)用,則有Linux ext2/ext3文件系統(tǒng)彪薛、LUKS加密分區(qū)茂装、GNOME、KDE善延、Mac OS X等等少态。另外我們也可以在e2fsprogs包中的UUID庫(kù)找到實(shí)現(xiàn)。
使用UUID的好處是易遣,能夠保證獨(dú)立性彼妻,程序可以在不同的數(shù)據(jù)庫(kù)間遷移,效果不受影響豆茫。 保證生成的ID不僅是表獨(dú)立的侨歉,而且是庫(kù)獨(dú)立的,這點(diǎn)在在切分?jǐn)?shù)據(jù)庫(kù)的時(shí)候尤為重要澜薄。而缺點(diǎn)为肮,變是~長(zhǎng)
CENTOS7 下安裝 UUID,需要先安裝幾個(gè)庫(kù)
yum -y install uuid uuid-devel e2fsprogs-devel libuuid-devel
然后在官網(wǎng)下載 http://pecl.php.net/package/uuid 進(jìn)行編譯安裝,我下載的是 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
# 因?yàn)槲业腜HP 是裝在 exec 下肤京,具體看各人自已的環(huán)境
/opt/php/exec/bin/phpize
./configure --with-php-config=/opt/php/exec/bin/php-config
make && make install
裝完在 php.ini 里導(dǎo)入 extension=uuid.so
<?php
# 調(diào)用
echo uuid_create(1)
完整實(shí)現(xiàn)
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;
}