facebook如何生成图像名称?

时间:2013-12-23 17:42:48

标签: php mysql random

我想这是用户ID和随机数的串联,但facebook如何确保没有两张照片具有相同的名称?

2 个答案:

答案 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");