Генерирование уникальных ID
Могут возникать ситуации, когда вам нужно сгенерировать уникальную строку. Я видел множество людей, использовавших для этого функцию md5(), хотя она предназначена не совсем для этой цели:
1.// generate unique string2.echo md5(time() . mt_rand(1,1000000));В действительности существует функция PHP с названием uniqid(), которая для этого подходит абсолютно точно.
01.// generate unique string02.echo uniqid();03./* prints04.4bd67c947233e05.*/06.07.// generate another unique string08.echo uniqid();09./* prints10.4bd67c947234011.*/Можно заметить, что, хотя строки уникальны, они кажутся подобными из-за нескольких первых символов. Это оттого, что сгенерированная строка связана со временем сервера. Прекрасный побочный эффект, так как каждый заново сгенерированный id в дальнейшем следует в алфавитном порядке, так что их можно сортировать.
Чтобы уменьшить вероятность получения дубликатов, можно использовать префикс или второй параметр для увеличения энтропии:
01.// with prefix02.echo uniqid('foo_');03./* prints04.foo_4bd67d6cd8b8f05.*/06.07.// with more entropy08.echo uniqid('',true);09./* prints10.4bd67d6cd8b926.1213510611.*/12.13.// both14.echo uniqid('bar_',true);15./* prints16.bar_4bd67da367b650.4368464717.*/Эта функция будет генерировать более короткие строки, чем md5(), что позволит сэкономить место.