Невозможно сгенерировать случайное число, которое является уникальным - если генератор зависит от состояния, то выход по определению не случайный.
Можно сгенерировать набор случайных чисел и удалить дубликаты (хотя при этом числа снова перестают быть по-настоящему случайными).
Вам действительно нужно случайное число или вам нужен порядковый номер или уникальный идентификатор - это 3 отдельные вещи.
, который генерирует уникальный ключ для URL
MySQL и SQLite оба поддерживают типы столбцов с автоинкрементом, которые будут уникальными (по сути, такими же, как порядковый номер). MySQL даже имеет механизм для обеспечения уникальности между эквивалентными узлами - даже там, где они не тесно связаны. Oracle предоставляет генераторы последовательности.
И MySQL, и PHP имеют встроенную функциональность для генерации uuids , хотя, поскольку большинство СУБД поддерживают генерацию суррогатных ключей, у этого подхода мало очевидных преимуществ.