PHP产生guid的算法一例

  1. 类库
  2. <?php
  3. // guid.php
  4. class System {
  5.   function currentTimeMillis() {
  6.     list($usec, $sec) = explode(” “,microtime());
  7.     return $sec.substr($usec, 2, 3);
  8.   }
  9. }
  10. class NetAddress {
  11.   var $name = ‘localhost’;
  12.   var $ip   = ‘127.0.0.1’;
  13.   function getHost($coumputer_name, $ip) { // static
  14.     $address = new NetAddress();
  15.     $address->name = $coumputer_name;
  16.     $address->ip   = $ip;
  17.     return $address;
  18.   }
  19.   function toString() {
  20.     return strtolower($this->name.’/’.$this->ip);
  21.   }
  22. }
  23. class Random {
  24.   function nextLong() {
  25.     $tmp = rand(0,1)?’-‘:”;
  26.     return $tmp.rand(1000, 9999).rand(1000, 9999).rand(1000, 9999).rand(100, 999).rand(100, 999);
  27.   }
  28. }
  29. class Guid{
  30.   var $valueBeforeMD5;
  31.   var $valueAfterMD5;
  32.   function Guid($computer_name, $ip){
  33.     $this->getGuid($computer_name, $ip);
  34.   }
  35.   function getGuid($coumputer_name, $ip){
  36.     $address = NetAddress::getHost($coumputer_name, $ip);
  37.     $this->valueBeforeMD5 = $address->toString().’:’.System::currentTimeMillis().’:’.Random::nextLong();
  38.     $this->valueAfterMD5 = md5($this->valueBeforeMD5);
  39.   }
  40.   function newGuid() {
  41.    $Guid = new Guid();
  42.    return $Guid;
  43.   }
  44.   function toString() {
  45.    $raw = strtoupper($this->valueAfterMD5);
  46.    return substr($raw,0,8).’-‘.substr($raw,8,4).’-‘.substr($raw,12,4).’-‘.substr($raw,16,4).’-‘.substr($raw,20);
  47.   }
  48. }
  49. ?>
  50. 调用
  51. <?php
  52. require_once(‘guid.php’);
  53. $computer_name = $_SERVER[“SERVER_NAME”];
  54. $ip            = $_SERVER[“SERVER_ADDR”];
  55. $guid = new Guid($computer_name, $ip);
  56. print $guid->toString();

本文固定链接: http://www.ccsbbs.com.cn/archives/5813.html | 极限手指

该日志由 极限手指 于2013年03月01日发表在 PHP 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: PHP产生guid的算法一例 | 极限手指

PHP产生guid的算法一例:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!