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