GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) 。 GUID是一个通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个32位十六进制数。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 1<?
2
3// 三段
4// 一段是微秒 一段是地址 一段是随机数
5class Guid
6{
7 //$key 三段 (地址.微秒.随机数)
8 private $key;
9 private $value;
10 private $name = 'localhost';
11 private $ip = '127.0.0.1';
12
13 function __construct(){
14 $this->name = $_SERVER["SERVER_NAME"];
15 $this->ip = $_SERVER["SERVER_ADDR"];
16 }
17
18 /**
19 * 根据当前时间戳返回字符串
20 */
21 static function currentTimeMillis()
22 {
23 list($usec, $sec) = explode(" ",microtime());
24 return $sec.substr($usec, 2, 3);
25 }
26
27 /**
28 * 生成随机数
29 */
30 static function nextLong()
31 {
32 $tmp = rand(0,1)?'-':"";
33 return $tmp.rand(1000, 9999).rand(1000, 9999).rand(1000, 9999).rand(100, 999).rand(100, 999);
34 }
35
36 function toString()
37 {
38 return strtolower($this->name.'/'.$this->ip);
39 }
40
41 /**
42 * 生成GUID
43 */
44 private function createGuid()
45 {
46 $this->key = $this->toString().':'.self::currentTimeMillis().':'.self::nextLong();
47 $this->value = md5($this->key);
48 }
49
50 /**
51 * 获取GUID,把生成的32位MD5值分割显示
52 * @return string
53 */
54 public function getGuid()
55 {
56 $this->createGuid();
57 $raw = strtoupper($this->value);
58 return substr($raw,0,8).'-'.substr($raw,8,4).'-'.substr($raw,12,4).'-'.substr($raw,16,4).'-'.substr($raw,20);
59 }
60}
61
62$Guid = new Guid();
63echo $Guid->getGuid();
64
537507A5-7439-EF59-C408-A31B1AD8F82C
来自: 链接地址