Сгенерированный ниже код 30000 уникальных идентификаторов в 21.378324985504 1 секунд.
$ids = [];
while (count($ids) < 30000) {
$id = bin2hex(random_bytes(6));
if (!in_array($id, $ids)) array_push($ids, $id);
}
var_dump(count($ids));
var_dump($ids);
Приведенный выше код будет продолжать генерировать идентификаторы, пока он не получит 30 000 уникальных идентификаторов, для break
.
нет никаких оснований.
1 Время генерации может варьироваться.
Живой пример
Repl
Обновление № 1
Для тех, у кого нет PHP 7, вы можете использовать эту функцию.
Обновление № 2
Этот фрагмент намного эффективнее, согласно @ cckep комментарий:
$time_start = microtime(true);
$ids = [];
while (count($ids) < 30000) {
$id = bin2hex(random_bytes(6));
if (!isset($ids[$id])) $ids[$id] = true;
}
$ids = array_keys($ids);
$time_end = microtime(true);
$execution_time = ($time_end - $time_start);
var_dump(count($ids));
var_dump($ids);
echo $execution_time;