每次客户端请求服务支持时,我为客户端生成一个唯一标识符。
生成id后,将id插入数据库
这里是我的代码:
function makeUnique() {
$start_time = uniqid(microtime(1));
$duration = sprintf('%0.24f', $start_time);
return date('dmYHis').$duration;
}
echo makeUnique();
此输出:071120112032291320715949.928639888763427734375000
由于某种原因,我得到071120112032291320715949作为数字。我做错了什么?
你需要删除"。"(点)在函数中。你可能正在使用INT,它会删除点后面的数字。
return str_replace('.', '', date('dmYHis').$duration);
并确保字段足够大-如varchar(50)
我的建议是简单地使用md5
散列客户端id md5($clientid)
mysql字段为char(32)
您已经在代码中获得了解决方案。php函数uniqid()提供了…一个唯一的ID。如果您想确保它真的真的真的非常非常独特(尽管这不是必需的),只需将time()附加到末尾,如下所示:
return uniqid().time();
这也会返回字母和数字的混合(更高的熵),像这样的响应:
4eb8895a76edc1320716634