Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356

Почему количество записей превысило максимальное заданное значение?

13.06.2017, 03:33. Показов 951. Ответов 7

Студворк — интернет-сервис помощи студентам
Произошла следующая ситуация :

Есть кнопка на сайте , на которую очень быстро и много жмут пользователей.
Она заносит запись в бд .
Каждое нажатие выбирает из таблицы (куда выше записывается клик) сколько нажатий было сделано и делается след примерная проверка.

PHP
1
2
3
4
5
if(count($betsData) == $lotData['win_range_number']) {
            $this->closeLot($lotData,$betsData,$winnersModel,Core::$app->user);
        }else{
            $this->updateLotTimer($g_uid,$lotData['l_uid'],$lotData['lot_time_close'],self::APPEND_TIME);
        }
count($betsData) это то самое количество. А $lotData['win_range_number'] то с чем сравнивается. Допустим в ней тогда было 120.

В итоге вышло следующее, что кол-во ставок переросло и условие уже не работало.

Как это работает:

Сначала идет проверка на статус можно ли вообще нажимать? потом если все ок , заносится клик > потом идет select запрос сколько там записей и проверяется кусок кода что выше.
Если срабатывает if то статус меняется на неактивный а значит кликать больше нельзя будет. А если else то ничего грубо говоря. Я не знаю почему так...

PS Конечно все решает >= , но это не совсем то что нужно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.06.2017, 03:33
Ответы с готовыми решениями:

Определить количество дней, в которые стоимость проданных товаров превысило заданное значение
Помогите решить задачу в паскале 11,57 в массиве храняться сведенья об общей стоймости товаров проданой фирмой за каждый день марта....

Вывести время работы системы и перезагрузить её, если время превысило заданное значение
Собственно говоря нужно в powershell написать скрипт, выводящий время работы системы и отправляющий систему в перезагрузку, если время...

Массив: Определить количество дней, в которых стоимость проданных товаров превысило значение s
В массиве хранятся сведения об общей стоимости товаров проданных фирмой за каждый день марта. определить количество дней, в которых...

7
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
13.06.2017, 16:56
Создаёте таблицу Stavki, в неё добавляете ставку, получаете id записи, если id > win_range_number - удаляете ставку
0
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
13.06.2017, 20:05  [ТС]
plohoyav, не все так просто, эта таблица ставки собирает в себя все ставки со всех кнопок, их допустим 6.
Да это и не важно у меня был другой вопрос как могло такое произойти, ведь получается что когда произошел какой сбой в короткий промежуток времени. что в тот момент когда выполнялся SELECT , вставилась еще 1 запись, но на тот момент выборки этого Insert не было еще. Ибо больше у меня нету догадок.

Потому что тестировалось это дня 3, и было все нормально, нагнали трафика, для теста и такая вот штука случилась 1 раз.
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
13.06.2017, 20:21
2 апдейта одновременно сработали, в каждом случае значение count было на единицу меньше лимита
0
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
13.06.2017, 22:06  [ТС]
plohoyav, Вот тут можно поподробнее, потому как я раньше думал что все идет однопоточно, пока не закончится 1 не вставится другой. и Получается что при высоких нагрузках , и потоке. такие вещи будут ломаться. как быть?
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
13.06.2017, 23:18
https://habrahabr.ru/company/selectel/blog/230333/

mysql myisam обычно честно показывает count таблицы, mysql innodb не честно, так как может кешировать результаты запросов
0
 Аватар для Зверушь
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
14.06.2017, 09:24
Тоже интересует этот вопрос. И как быть с innodb? Не юзать его? или как-то можно запретить это самое кеширование?
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
14.06.2017, 17:49
https://habrahabr.ru/post/108418/

Проблема будет чаще возникать если включить "low-priority-updates" — эта опция mysql сервера снижает приоритет операций INSERT/UPDATE по сравнению с SELECT. Актуально, если данные важно быстрее прочитать, чем быстрее записать.

Кэширование запросов

query_cache_limit — максимальный размер кэшируемого запроса.
query_cache_min_res_unit — минимальный размер хранимого в кэше блока.
query_cache_size — размер кэша. 0 отключает использование кэша. Для выбора оптимального значения необходимо наблюдать за переменной состояния Qcache_lowmem_prunes и добиться, чтобы ее значение увеличивалось незначительно. Также нужно помнить, что излишне большой кэш будет создавать ненужную нагрузку.
query_cache_type — (OFF, DEMAND, ON). OFF отключает кэширование, DEMAND – кэширование будет производиться только при наличии директивы SQL_CACHE в запросе, ON включает кэширование.
query_cache_wlock_invalidate — определяет будут ли данные браться из кеша, если таблица, к которым они относятся, заблокирована на чтение.

Добавлено через 6 минут
Некоторые пытаются выполнить некеширумый запрос подсчёта кол-ва строк в таблице

SQL
1
SELECT SQL_NO_CACHE COUNT(*)  FROM tablename
Добавлено через 47 секунд
Зверушь, не могу за вас принимать решения
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.06.2017, 17:49
Помогаю со студенческими работами здесь

Максимальное количество записей
Есть база из двох таблиц. Допустим, эти таблицы называются "Клиент" и "Покупка" (на самом деле названия таблиц другие, но даный пример...

Выбрать максимальное количество записей из БД
Здравствуйте! Скажите пожалуйста, как можно выбрать максимальное количество записей из такой такблицы: user_one user_two type 1 7 1...

Максимальное количество записей в SQLite
Привет всем! Подскажите, пожалуйста, если в базе SQLite есть одна таблица с шестью полями и в каждом поле может быть текстовое...

Ввести заданное количество чисел с клавиатуры и определить максимальное из них
Ввести N чисел с клавиатуры и определить максимальное из них. Необходимо использовать циклы, но без массивов. Как это осуществить?!

Выбрать максимальное количество чисел в массиве, сумма которых не превышает заданное
Доброго времени суток!Помогите написать или найти готовую программу.Дан набор натуральных чисел и число P. Выбрать максимальное количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru