Мое приложение написано в Symfony, в котором есть система онлайн-оплаты.Обычно, когда два или более пользователя одновременно проходят проверку, он генерирует один и тот же номер заказа.Как следствие, это создает избыточность в базе данных, что может привести к несогласованности.
Мы генерируем девятизначный uniqid для номера заказа, и в то же время мы проверяем недавно сгенерированный #id для базы данных, чтобы избежать дублирования.
$slug = substr(hexdec(uniqid('', false)),0,9);
while($this->_doctrine->getManager()->getRepository('ZACartBundle:Cart')->findOneBySlug($slug) != null){
$slug = substr(hexdec(uniqid('', false)),0,9);
}
return $slug;
По сути, нам нужно иметьуникальный слаг для номера заказа при одновременном обращении пользователей к процессу оформления заказа.