سؤال

وأنا أحاول لتوليد معرف فريد في بي لتخزين المحتوى المحمل من قبل المستخدمين على FS دون صراعات. أنا باستخدام PHP، وفي لحظة هذا مقتطف صغير هو المسؤول عن توليد UID:

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

وهذا الرمز هو البشعة: يقوم بإنشاء ملف مؤقت على FS وحذف منه، والإبقاء فقط على جزء فريد ذي الصلة من سلسلة ولدت

هل هناك أي طريقة أفضل للقيام بذلك، ويفضل معظم من دون أي تبعيات الخارجية؟

وشكرا جزيلا!

هل كانت مفيدة؟

المحلول

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

ويحصل على معرف فريد مسبوقة على أساس الوقت الحالي في ميكروثانية.

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

نصائح أخرى

ونظرا لأن كلا uniqid () وراند () هي وظائف على أساس الوقت الحالي، راند () يضيف أي ما يقرب من الكون، منذ ذلك الوقت سيتغير سوى كمية صغيرة بين المكالمات منها.

وطالما كنت تستخدم الخيار more_entropy، يجب أن لا يكون لها تصادم في خادم واحد. إذا كنت تستخدم المجموعات، تأكد من تضمين بادئة التي تختلف بين الملقمات.

وuniqid () هو ما كنت أبحث عنه في معظم الحالات العملية.

ويمكنك ان تجعل حتى أكثر "UNIQ" بإضافة رقم عشوائي كبير بعد ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top