在使用php生产时我们经常会遇到一些生成唯一标识的问题:
NO1:数据库自增,完全满足小生产环境
大多数情况我们会用到自增的办法去处理---auto_increment
一些时候我们可以配合步长的方法解决完成实际的生产。
注:自增的话,MySQL是可以保证递增,但删记录后可能有问题。另外有序的流水号可能会泄露业务数据。
NO2:GUID 需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理
public functioncreate_guid(){
$charid=strtoupper(md5(uniqid(mt_rand(), true)));
$hyphen=chr(45);// "-"
$uuid = substr($charid, 6, 2).substr($charid, 4, 2).substr($charid, 2, 2).substr($charid, 0, 2).$hyphen .substr($charid, 10, 2).substr($charid, 8, 2).$hyphen .substr($charid,14, 2).substr($charid,12, 2).$hyphen .substr($charid,16, 4).$hyphen .substr($charid,20,12);
return $uuid;
}
NO3:自带函数或加密算法解决无并发生产
PHP 常用的有 MD5() sha() 算法配合time()生成或者使用uniquid()函数
NO4:microtime()
$time=explode(' ',microtime());
return base_convert(($time[1].($time[0]*100000000)),10,32);