Я прочитал несколько вопросов о присвоении имен загруженным изображениям, и люди обычно советуют хешировать содержимое изображений для создания уникального имени файла плюс автоматическое предотвращение хранения дубликатов. Но если два пользователя загружают одно и то же изображение, а затем один из них хочет удалить его?
Нам потребуется проверять наличие дополнительных владельцев каждый раз при удалении изображения.
ИМХО вероятность дублирования файлов обычно крошечная; в то же время для этой проверки требуется добавить несколько строк кода, и это будет стоить чего-то с точки зрения производительности (галереи, как правило, используют огромные таблицы).
Так почему бы не использовать действительно случайную строку для имени?
В php, например:
$filename = md5(mt_rand());
Не говоря уже о том, что хэши генерируют довольно длинные значения, и со случайным значением вы можете отрегулировать длину по своему усмотрению (имея в виду, что число вариаций также изменяется):
$filename = substr(md5(mt_rand()), 0, 15);
И с петлей для возможных столкновений (идея, украденная из другого вопроса):
while (true) {
$filename = substr(md5(mt_rand()), 0, 15);
if (!file_exists('somedir/'.$filename.'.jpg')) break;
}
Что вы думаете?