私は、MySQL データベースに時折エントリを挿入するこの小さな内部プロジェクトを持っています。「idChar」という名前の列があり、その値を長さ31の62文字を使用してランダムに生成された文字列に設定しました。
今日、新しいエントリが、たまたま数か月前のエントリとまったく同じ idChar を持っていることを発見しました。保存する前に重複エントリをチェックしていますが、これが発生する可能性について考えさせられました。これらのランダムキーを生成する実装に欠陥があるかどうか知りたいです. 複製を取得すると、おおよそ 62^31 分の 1 になるはずですよね?
function getCode($len)
{
//$len = 10;
$base='ABCDEFGHIJKLMNOPQRSTWXYZabcdefghijklmnopqrstwxyz123456789';
$max=strlen($base)-1;
$linkCode='';
mt_srand((double)microtime()*1000000);
while (strlen($linkCode)<$len+1)
$linkCode.=$base{mt_rand(0,$max)};
return $linkCode;
}
$idChar=getCode(30);
//code to insert into MySQL here