Так, я хочу создать автомобильные гонки для своих плееров игры RPG. Игрок может создать гонку и выбрать, сколько участников может участвовать в гонке. После того, как гонка создается, другие люди могут присоединиться к ней. Когда максимальные участники забраны, гонка начинается.
Моя идея, когда последний участник присоединяется, затем немедленно выбирает победителя (кто автомобиль, является лучшим, тот человек победы), но как я могу сделать это? Если я принимаю решение выбрать победителя после последних участвующих соединений, то я должен поместить много запросов в одну страницу (избранные данные из таблицы, то удалите гонку, то статистика автомобилей избранных игроков и выберите победителя и с другой стороны, с помощью mysql, отправьте сообщение всем).
Но эта идея действительно не оптимальна, и она отстанет безжалостно для того последнего человека. Возможно, у Вас есть любые идеи, как я могу избежать задержки и сделать ее более оптимальной.Большое спасибо.
Но эта идея действительно не оптимальна , и она будет жестоко отставать от последнего человека.
Что заставляет вас так думать? «Получите гонку, узнайте статистику персонажей участников, получите статистику автомобилей участников, изучите статистику, чтобы выбрать победителя» - это не большая вычислительная нагрузка. Если вы не запускаете свой сервер на действительно древнем оборудовании и разделяете его со 100 другими приложениями, браузеру пользователя потребуется больше времени, чтобы установить сетевое соединение с вашим сервером, чем вам, чтобы определить результаты гонки. .
Если вы на самом деле тестировали этот дизайн и заметили значительную задержку для финального проигрывателя сверх задержки для загрузки других страниц в вашей игре, значит, у вас действительно есть проблема, и требуется оптимизация, но проблема почти наверняка с алгоритмом, который вы используете для вычисления победителя, а не с использованием нескольких запросов для создания одной страницы.
Всегда помните Правила Клуба оптимизации .
Если вы хотите, чтобы гонка обрабатывалась, когда к ней присоединяется последний человек, вы, вероятно, захотите использовать асинхронную обработку, чтобы последнему не приходилось ждать .
Есть вопрос об асинхронной обработке с PHP здесь и еще один здесь
Основная идея заключается в том, что страница, которую выполняет последний участник, быстро возвращается (возможно, просто с сообщением, чтобы они знают, что гонка продолжается), но обработка продолжается на сервере.
Сложный ответ - как я представляю себе эту игру.
Надеюсь, все это имеет смысл. Если вы еще не используете библиотеку JavaScript, я рекомендую вам это сделать, поскольку они делают кроссбраузерный ajax таким простым.