В вашем постулате есть несколько недостатков, согласно которым случайные значения будут уникальными - независимо от того, насколько хорош генератор случайных чисел. Кроме того, чем лучше генератор случайных чисел, тем больше времени требуется для вычисления результатов.
Не лучше ли использовать хеш файла данных - таким образом вы получите добавленное преимущество обнаружения дублированных представлений.
Если обнаружение дубликатов известно как не проблема, то я все равно рекомендовал бы этот подход, но изменил бы вывод на основе обнаруженных коллизий (но используя гораздо более дешевый метод вычисления, чем предложенный Lo 'oris) например
$candidate_name=generate_hash_of_file($input_file);
$offset=0;
while ((file_exists($candidate_name . strrev($offset) && ($offset<50)) {
$offset++;
}
if ($offset<50) {
rename($input_file, $candidate_name . strrev($offset));
} else {
print "Congratulations - you've got the biggest storage network in the world by far!";
}
это даст вам возможность хранить около 25 * 2 ^ 63 файлов с использованием хэша sha1.
Что касается того, как генерировать хеш, чтение всего файла в PHP может быть медленным (особенно если вы пытаетесь прочитать все это в одну строку, чтобы хэшировать его). Большинство систем Linux / Posix / Unix поставляются с такими инструментами, как 'md5sum', которые очень эффективно генерируют хэш из потока.
C.