Zend Form вставляет повторяющиеся записи в поле пользователя "username", даже если я проверил, существует? - PullRequest
1 голос
/ 30 января 2012

У меня была странная проблема, наш веб-сайт имеет регистрационную форму, закодированную с помощью Zend Form, я проверил базу данных, существует ли имя пользователя или нет, перед операцией вставки Zend DB, она работает нормально всегда, также отлично работала для наших тысяч пользователей,но только в нескольких (около 100) записях дубликаты сохраняются автоматически (угадывание) даже с разницей в 10 или 20 секунд, поэтому нет возможности снова отправить форму с другими значениями, кроме столбца с автоинкрементом.

1 Ответ

3 голосов
/ 31 января 2012

Ситуация довольно проста и называется "гонкой".

1. User1 submit form (email: x@x.com)
2. User2 submit form (email: x@x.com)
3. verify no x@x.com for User1
4. verify no x@x.com for User2
 - before nither of them added there is no x@x.com in DB 
5. Add to db User1
6. Add to db User2 
- you have got an duplication error.

Решение:

1. unique index to filed email
2. transaction (started from verification email exist up to insert a new record)
...