- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть таблица в бд.
id (int) | user_id (int)
Пользователь запрашивает на выборку 10 строк из таблицы, но, эти данные может получить только он, и не в коем случае, не другой.
Получается:
Делаем сперва SELECT WHERE user_id = 0 LIMIT 5
И далее UPDATE SET user_id="user.id" выбранных записей, чтобы другой пользователь не выбрал одни и те же данные.
Но тут проблема.
Когда идут одновременно 2 и более запросов на выборку,
то разные пользователи получают одни и те же данные из БД, что не допустимо.
Т.е. между запросом SELECT И UPDATE, идет опять запрос к странице от другого пользователя и скрипт опять делает SELECT тех же самых записей...
Помогите, пожалуйста, решить эту проблему.
Как делать выборку и быть уверенным на 100%, что одни и те же данные не попадут разным пользователям?
revered, поле user_id вы создали дабы указать кому выбирать данные из таблицы, я правильно понимаю?
Полн user_id показывает кто уже выбрал эти данные. Чтобы не показывать их другому юзеру.
Изначально user_id = 0
транзакции
Делайте сначала update, а потом select.
Сначала делайте UPDATE , потом считывайте строки пользователя. Если строк не найдено, еще раз UPDATE.
Спасибо за советы.
Но тут вариант с UPDATE не получился бы.
В итоге сделал с помощью GET_LOCK
Спасибо всем кто откликнулся!
Все верно сделали с LOCK, это самый надежный вариант.
Спасибо за советы.
Но тут вариант с UPDATE не получился бы.
В итоге сделал с помощью GET_LOCK
Спасибо всем кто откликнулся!
не получился бы?