2017-02-16 3 views
0

У меня есть этот скрипт, который генерирует случайные промо-коды.Как я могу улучшить этот случайный сценарий генератора промокодов?

} 
    $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?

+0

Спасибо за указание, что из Джона. Я прочитал этот вопрос. Я не думал, что это был обман, когда я пытался генерировать массовое генерирование против создания рекламной консоли как пример. Однако сейчас я переосмысливаю весь подход. – RushVan

ответ

0

Гораздо более простой способ:

$randomString = sha1(rand(0, 2000)); 
+0

Как это обеспечить то, что создано, уникально для текущего набора? – RushVan

+0

Вы можете проверить, что он думал о базе данных с подтверждением и удаляет их, когда они подтверждены. Если он выйдет, восстановите его. – Ad5001

+0

Ярмарка. Быть ясным. Мой скрипт должен генерировать коды навалом. Не один. Поэтому мне нужно создать и вставить 15k за раз. Хотя, я думаю, теперь, когда я думаю об этом, я мог бы переосмыслить весь процесс и генерировать их по мере необходимости не заранее ... – RushVan

Смежные вопросы