PHP/MySQL | Вопрос кодерам
Держу игру и один из юзеров использует непонятный мне баг. С его слов - баг работает во многих играх, в том числе крупных (приводил в пример пиратго), где он получил за него бан. Так же написал, что одна из его любимых ранее игр даже закрылась, т.к сделать с багом ничего не смогли (имхо, бред).
Суть бага - сидит с гугл хрома (с него работает лучше всего), чуть хуже с оперы. Заходит в магазин в игре, допустим, есть кнопка "Купить". Максимально быстро ее кликает, и игра каким то образом дает ему купить лишнего и уйти в минус. Все проверки в игре на месте, игра не пабловая. Точно так же - идет бой с боссом, делается удар и 15сек таймер-откат до следующего удара, пишется лог боя. Этим же методом - делает подряд по 2 удара, выходит в топ по урону. Либо вообще - копирует вещи, с аукциона например, тем же способом.
Как закрыть? Кто встречал?
Суть бага - сидит с гугл хрома (с него работает лучше всего), чуть хуже с оперы. Заходит в магазин в игре, допустим, есть кнопка "Купить". Максимально быстро ее кликает, и игра каким то образом дает ему купить лишнего и уйти в минус. Все проверки в игре на месте, игра не пабловая. Точно так же - идет бой с боссом, делается удар и 15сек таймер-откат до следующего удара, пишется лог боя. Этим же методом - делает подряд по 2 удара, выходит в топ по урону. Либо вообще - копирует вещи, с аукциона например, тем же способом.
Как закрыть? Кто встречал?
лочить действия и доп проверки . да и думать головой когда пишут код
ElDiablo, это могло бы быть возможным, при условии того, что начинает работать новый воркер, когда старый ещё не отработал полностью, но это всё равно должно быть сделано очень быстро. Есть большие сомнения, что сервер успевает спавнить новые воркеры, когда ещё старые не отработаны. Вариантов два:
1. Либо делать локи, как в посту 1.
2. Либо переходить на глобальной контекст, и делать жизненный цикл приложения на манер "больших" MMO, отдавая лишь вывод как HTML(сама игра станет работать значительно шустрее). В таком случае, можно ставить запросы игрока в очереди, не плодя сразу кучу воркеров, либо
синхронизировать воркеры.
________
посл. ред. 06.02.2019 в 14:50; всего 3 раз(а); by monobogdan
1. Либо делать локи, как в посту 1.
2. Либо переходить на глобальной контекст, и делать жизненный цикл приложения на манер "больших" MMO, отдавая лишь вывод как HTML(сама игра станет работать значительно шустрее). В таком случае, можно ставить запросы игрока в очереди, не плодя сразу кучу воркеров, либо
синхронизировать воркеры.
________
посл. ред. 06.02.2019 в 14:50; всего 3 раз(а); by monobogdan
Если есть все проверки, тогда такое возможно при отправке 2х запросов в одно время вплоть до милисекунд что мало вероятно)
Скрипт не успевает отработать запрос как вто же время поступает второй запрос.
Вот к примеру в sadovnik.mobi стоит защита когда подаёшь запрос второй система выдаёт ошибку что предыдущий ещё не обработался.
Механик (06.02.2019 в 14:57)
Вот к примеру в sadovnik.mobi стоит защита когда подаёшь запрос второй система выдаёт ошибку что предыдущий ещё не обработался.
Вот к примеру в sadovnik.mobi стоит защита когда подаёшь запрос второй система выдаёт ошибку что предыдущий ещё не обработался.
http://prntscr.com/mhdjn4 но там на джаве написано. В общем в бд можно не на тупую слать запросы, а использовать транзакции, должно помочь
89828013, сервлеты на Java разворачиваются в специальных контейнерах вроде Tomcat и GlassFish, которые представляют из себя полноценные, хайлоад реди сервера. Но возможно nginx подрублен там для балансировки или ещё чего нибудь.
monobogdan, и зачем ты мне это написал? :) как будто я не знал этого. Нгинкс для фронта идет а обработка в томе
89828013, уточнил =)