Какова логика быстрого сохранения кратковременных данных в БД?

Здравствуйте.
Начал писать игрушку и столкнулся с такой проблемой:
Мне нужно передать от клиента (js) в скрипт (php), как я понял посредством AJAX, две переменные, обозначающие вектор направления (например (1;0) или (-1;1)), а уже в скрипте обработать их и записать в Базу Данных. Проблема в том, что данные сохраняются в БД, а так же результат работы скрипта возвращаемый обратно в JS - работают слишком медленно, а данные меняются очень быстро (движение персонажа).

Просто обрабатывать данные на стороне клиента и передавать чисто результат координат для сохранения - подвергать переменные риску подмены и сохранять ложные результаты.

Моя логика скрипта проста:
При нажатии на клавишу посылаем посредством AJAX в PHP-скрипт данные. Берем данные о текущем местоположении персонажа. Делаем расчет новых координат. Их - сохраняем и возвращаем пользователю для перемещения персонажа.

Вопрос состоит в том, как оптимизировать подобную работу? Ведь можно же.
  • Вопрос задан
  • 348 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Fortop
Tech/Team lead
Для быстрого доступа к данным использовать Redis или memcache.

Для быстрой передачи данных не использовать ajax по http.
Вместо него использовать протокол Websockets
Ответ написан
AlexXYZ
@AlexXYZ
O Keep Clear O
Просто обрабатывать данные на стороне клиента и передавать чисто результат координат для сохранения - подвергать переменные риску подмены и сохранять ложные результаты.

А по ssl? Для ajax вроде ничего настраивать не надо, да и на сервере настроек тоже немного.
Ответ написан
@766dt
Как вариант, использовать на стороне сервера что-нибудь, не "созданное чтобы умирать", и хранить все прямо в памяти, и лишь периодически записывать все в базу. Зависит от размера данных, которые необходимо хранить, конечно.
Если без вариантов PHP, тогда да, любой внешний кеш, вроде Redis.
Ответ написан
Комментировать
maaGames
@maaGames
Погроммирую программы
Используй предиктор на стороне сервера. Если предсказанное движение персонажа совпадает с реальным, то его не нужно сохранять в БД (оно будет восстановлено по уже имеющимся данным). Самый примитивный вариант, чтобы ожидаемое направление совпадает с предыдущим. Т.е. сохранять понадобится не каждый "тик" игры, а только те моменты, когда игрок меняет направление движения. Но сохранять придётся направление и временнУю метку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы