我有這個腳本生成隨機的促銷代碼。如何改善這個隨機促銷代碼生成器腳本?
}
$length = 10;
$characters = '123456789ABCDEFGHJKMNPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$event = $request->event;
$prefix = $request->prefix;
$quantity = $request->quantity;
$randomString = '';
for ($x = 0; $x <= $quantity; $x++) {
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
$pin = "$prefix"."$randomString";
$exists = Pin::where('pin', $pin)->first();
if(!$exists){
$new['pin'] = $pin;
$new['event'] = $event;
$new['user'] = '';
Pin::create($new);
}
$randomString = '';
}
它的工作原理,但需要進行優化,因爲它可能需要永遠執行,當$數量超過幾千。
我懷疑時間是尋找引腳是否存在的位。我確定必須有一種更有效的方法來確保隨機字符串是唯一的。
想法?謝謝!
******正如指出的隨機哈希生成這裏已經解決******
也許部分2到這個問題,然後...
客戶端請求一組爲隨機碼選擇字符 - '123456789ABCDEFGHJKMNPQRSTUVWXYZ'。有沒有辦法限制由MD5散列字符輸出?
感謝指出了這一點約翰。我確實讀過這個問題。我不認爲這是一個愚蠢的事情,因爲我試圖批量生成,並創建像例子那樣的廣告。但是,現在我正在重新思考整個方法。 – RushVan