Frage

Ich versuche, eine eindeutige ID in PHP zu generieren, um benutzerhochgeladenen Inhalte auf einem FS ohne Konflikte zu speichern. Ich bin mit PHP, und im Moment dieser kleine Schnipsel ist verantwortlich für die Erzeugung der UID:

$id = tempnam (".", "");
unlink($id);
$id = substr($id, 2);

Dieser Code ist scheußlich. Es eine temporäre Datei auf dem FS erstellt und löscht es, nur den relevanten einzigartigen Teil der erzeugten Zeichenfolge beibehalten

Gibt es einen besseren Weg, dies zu tun, am meisten bevorzugt ohne externe Abhängigkeiten?

Dank viel!

War es hilfreich?

Lösung

string uniqid ([ string $prefix [, bool $more_entropy ]] )

Ruft eine eindeutige ID mit Präfix basiert auf der aktuellen Zeit in Mikrosekunden.

USAGE: $id = uniqid(rand(), true);

Andere Tipps

Da sowohl uniqid () und rand () Funktionen auf Basis der aktuellen Zeit, rand () fügt fast keine Entropie, da die Zeit nur eine kleine Menge zwischen den jeweiligen Anrufe ändern.

Solange Sie die more_entropy Option verwenden, sollten Sie nie eine Kollision in einem einzigen Server. Wenn Sie Clustering verwenden, müssen Sie ein Präfix enthalten, die zwischen Servern unterscheidet.

uniqid () ist das, was Sie suchen in den meisten praktischen Situationen.

Sie können es machen noch mehr „uniq“ durch eine große Zufallszahl, nachdem es hinzugefügt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top