westdc-zf1/application/models/uuid.php

38 lines
966 B
PHP
Raw Permalink Normal View History

2009-03-06 03:20:46 +00:00
<?php
// 三段
// 一段是微秒 一段是地址 一段是随机数
class uuid
{
private $valueBeforeMD5;
private $valueAfterMD5;
function __construct()
{
$address = $this->getLocalHost();
$this->valueBeforeMD5 = $address.':'.$this->currentTimeMillis().':'.$this->nextLong();
$this->valueAfterMD5 = md5($this->valueBeforeMD5);
}
function toString()
{
$raw = strtoupper($this->valueAfterMD5);
return substr($raw,0,8).'-'.substr($raw,8,4).'-'.substr($raw,12,4).'-'.substr($raw,16,4).'-'.substr($raw,20);
}
private function nextLong()
{
$tmp = rand(0,1)?'-':'';
return $tmp.rand(1000, 9999).rand(1000, 9999).rand(1000, 9999).rand(100, 999).rand(100, 999);
}
private function currentTimeMillis()
{
list($usec, $sec) = explode(" ",microtime());
return $sec.substr($usec, 2, 3);
}
private function getLocalHost()
{
$address = $_ENV["COMPUTERNAME"].'/';
$address.= $_SERVER["SERVER_ADDR"];
return strtolower($address);
}
}
?>