Я сейчас использую sha256 от mt_rand() , и беру 4 первые 4 символа , после чего проверяю занятно ли имя файла . Если да вызываю функцию повторно . Если нет возвращаю значение .
Норм ? или нет ? жду критики
Если оставить в стороне озвученный выше вопрос, то лучше взять uuid1, и от него брать sha256. Uuid1 завязан на текущее время, так что в принципе можно более менее гарантировать уникальность. Для генерации uuid берёшь ramsey/uuid. Можно так же заюзать например laminas/laminas-math, там сразу можно указать и набор допустимых символов, и длину. Рандомизация будет лучше, чем при усечении хеша.