我想这是用户ID和随机数的串联,但facebook如何确保没有两张照片具有相同的名称?
答案 0 :(得分:1)
我不确切知道facebook是如何做到这一点的,但你肯定是用你的用户ID和随机数(使用像uniqid()这样的PHP函数)。您可以将图像的MD5投入其中以获得良好的测量结果。你是对的,假设即使使用最随机的方案,你仍然有可能发生名称冲突。您为应用程序添加了开销以检查这一点,但您可以这样做的方式。请注意,这假定您使用的是物理文件系统,而不是跟踪数据库中的文件并将其存储在云解决方案中
function ensure_unique_filepath($path){
$incr = 1;
while(file_exists($path)){
$path_parts = pathinfo($path);
$path = $path_parts['dirname'] . '/' . $path_parts['filename'] . '_' . $incr . '.' . $path_parts['extension'];
}
return $path;
}
答案 1 :(得分:1)
函数 StrongFileName()将生成一个强大的file_name。这样生成的文件名是:
的组合用户ID +时间()+随机数
,整个代码是:
function random_number($length) {
$chars = "0123456789011121314151617181920";
$size = strlen( $chars );
for($i=0;$i<$length;$i++) {
$str.=$chars[rand(0,$size-1)];
}
return $str;
}
function StrongFileName($user){
$time=time();
$random=random_number(10);
$filename=$user."_".$time."_".$random;
return $filename;
}
用法:
echo StrongFileName("1002548");