私がやろうとしているのは、YouTubeがビデオIDを処理する方法(http://www.youtube.com/watch?v=53iddd5IcSU)と同様に、私のWebサイトの記事に12文字のIDを作成することです。現在、MD5ハッシュを生成してから、次のように12文字を取得しています。
$ArticleId = substr(MD5("Article".$currentID),10,12)
ここで、$ currentIDはデータベースからの数値IDです(例:144)
重複した$ArticleIdに遭遇するのは少し妄想的ですが、現実的には、これが発生する可能性はどのくらいありますか?また、私のデータベースの列は一意であるため、醜いエラーをスローせずにこのまれなシナリオを処理するにはどうすればよいですか?
PS最初の5000$ArticleId内の重複をチェックするための小さなスクリプトを作成しましたが、何もありませんでした。
編集:base64_encodeハッシュの外観が気に入らないので、これを行いました:
function retryAID($currentID)
{
$AID = substr(MD5("Article".$currentID*2),10,12);
$setAID = "UPDATE `table` SET `artID` = '$AID' WHERE `id` = $currentID ";
mysql_query($setLID) or retryAID($currentID);
}
$AID = substr(MD5("Article".$currentID),10,12);
$setAID = "UPDATE `table` SET `artID` = '$AID' WHERE `id` = $currentID ";
mysql_query($setAID) or retryAID($currentID);
AID列は一意であるため、mysql_queryはエラーをスローし、retryAID関数は一意のIDを検出します...