假设许多用户一次上传他们的照片。那么我怎么能为每张pic生成一个唯一的id,它永远不会与其他生成的id匹配。
$uniqId = time().'_'.rand();
或应该使用。
uniqid();
答案 0 :(得分:8)
使用uniqid()
PHP function可能是您最好的方法,因为没有数据库用于发送的文件。
根据PHP手册:uniqid - 生成唯一ID。
“例如,如果您在多个主机上同时生成标识符,可能会在同一微秒内生成标识符,那么这可能很有用。”
答案 1 :(得分:7)
函数uniqid()
每纳秒产生一个不同的id,所以它在大多数情况下都是唯一的。
如果您希望在共享环境(多个服务器)中同时上传大量用户,则很可能在所有服务器上以相同的纳秒处理多个请求。
该函数接受两个参数来帮助增加结果的唯一性:
例如:
echo uniqid($my_hostname, true);
除服务器名称外,您还可以添加其他熵源,例如用户ID(如果适用)。
如果您使用数据库来跟踪图像,另一种方法是使用每行唯一的(auto_increment)主键(因此,数据库会为您处理唯一性)
答案 2 :(得分:3)
您可以通过mysql表生成uniqueid。
create table ids(id int auto_increment primary key);
当用户上传他们的照片时,写这样的SQL
insert into ids () values();
select last_insert_id();