Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: MySQL запрос

  1. #1
    Аватар для Нуб
    Пользователь

    Статус
    Оффлайн
    Регистрация
    16.04.2016
    Сообщений
    68
    Репутация:
    -1 ±

    MySQL запрос

    Хочу чтобы никакие данные игрока не потерпели крушение (слетели).
    Если например я сделаю так (после каждых переменных):

    [pLevel] = 3;
    Тут сохраняю запрос в базу данных, каждую переменную так. Это будет плохо для онлайна в 300 человек?

  2. #2
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от Нуб Посмотреть сообщение
    Хочу чтобы никакие данные игрока не потерпели крушение (слетели).
    Если например я сделаю так (после каждых переменных):

    [pLevel] = 3;
    Тут сохраняю запрос в базу данных, каждую переменную так. Это будет плохо для онлайна в 300 человек?
    Ничего не понял :D Опиши поподробнее в чем твоя проблема?

  3. #3
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Он хочет сохранять данные сразу после их изменения, а не по таймеру во избежание краша сервера и слёта данных
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  4. #4
    Аватар для Нуб
    Пользователь

    Статус
    Оффлайн
    Регистрация
    16.04.2016
    Сообщений
    68
    Репутация:
    -1 ±
    Цитата Сообщение от qwezert Посмотреть сообщение
    Ничего не понял :D Опиши поподробнее в чем твоя проблема?
    Проблем никаких нет, есть вопрос, который меня интересует. Вроде все ясно пояснил.

    Есть функция (например, их много): PINFO[playerid][pLVL] = 3;
    При её использовании, я буду использовать Savenew(playerid); (например).
    И так каждый раз я буду использовать запрос в базу данных, при каждом разе. Будут проблемы при онлайне в 300 человек? Очень интересует этот вопрос. Или лучше сохранять все самое необходимое сразу же, а только при выходе игрока сохранять остальное?

  5. #5
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от Нуб Посмотреть сообщение
    Проблем никаких нет, есть вопрос, который меня интересует. Вроде все ясно пояснил.

    Есть функция (например, их много): PINFO[playerid][pLVL] = 3;
    При её использовании, я буду использовать Savenew(playerid); (например).
    И так каждый раз я буду использовать запрос в базу данных, при каждом разе. Будут проблемы при онлайне в 300 человек? Очень интересует этот вопрос. Или лучше сохранять все самое необходимое сразу же, а только при выходе игрока сохранять остальное?
    Понял, ну ты сам описал оптимальный вариант сохранения
    сохранять все самое необходимое сразу же, а только при выходе игрока сохранять остальное
    . Если у тебя не гавнокод - то ты даже не заметишь что у тебя в бд оптправляются запросы несколько раз в секунду. Как то проводили тесты и в БД добавлялось 100к запросов в секунду и ничего не подвисало, так что твои 300 запросов в секунду сервер даже не почувствует.

  6. #6
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Я бы советовал делать некий генератор кода для отправки в бд.

    Как это? Ну допустим так
    PHP код:
    enum infoblock
    {
        
    vasya,
        
    petya,
        
    sasha
    };

    new 
    playerInfo[MAX_PLAYERS][infoblock],
        
    temp_playerInfo[MAX_PLAYERS][infoblock]; 
    записывать все переменные допустим в temp_playerInfo
    далее когда доходит дело до времени сохранения делать сверку с обычным блоком playerInfo
    если есть разница между переменными,
    - то делать запись из temp_playerInfo в playerInfo
    - то добавлять в форматируемую строку данную переменную и т.д.
    и так получится что постоянно много лишней инфы не попадёт под сейв тем самым и запрос быстрее выполняется и меньше нагрузки.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  7. #7
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Я бы советовал делать некий генератор кода для отправки в бд.

    Как это? Ну допустим так
    PHP код:
    enum infoblock
    {
        
    vasya,
        
    petya,
        
    sasha
    };

    new 
    playerInfo[MAX_PLAYERS][infoblock],
        
    temp_playerInfo[MAX_PLAYERS][infoblock]; 
    записывать все переменные допустим в temp_playerInfo
    далее когда доходит дело до времени сохранения делать сверку с обычным блоком playerInfo
    если есть разница между переменными,
    - то делать запись из temp_playerInfo в playerInfo
    - то добавлять в форматируемую строку данную переменную и т.д.
    и так получится что постоянно много лишней инфы не попадёт под сейв тем самым и запрос быстрее выполняется и меньше нагрузки.
    Хорошая идея)

  8. #8
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Я бы советовал делать некий генератор кода для отправки в бд.

    Как это? Ну допустим так
    PHP код:
    enum infoblock
    {
        
    vasya,
        
    petya,
        
    sasha
    };

    new 
    playerInfo[MAX_PLAYERS][infoblock],
        
    temp_playerInfo[MAX_PLAYERS][infoblock]; 
    записывать все переменные допустим в temp_playerInfo
    далее когда доходит дело до времени сохранения делать сверку с обычным блоком playerInfo
    если есть разница между переменными,
    - то делать запись из temp_playerInfo в playerInfo
    - то добавлять в форматируемую строку данную переменную и т.д.
    и так получится что постоянно много лишней инфы не попадёт под сейв тем самым и запрос быстрее выполняется и меньше нагрузки.
    И вместо того, чтоб просто отправить запрос в БД, которая гораздо более предрасположена к большим нагрузкам, ты предлагаешь загружать сервер кучей лишних проверок и формированию запросов. Хм... :)

    Если уж очень боитесь нагрузки, достаточно просто ограничивать действия, которые способствуют обновлению информации в БД, по времени (например, запрещать игроку передавать деньги чаще, чем раз в 5 секунд). Хотя если даже кто-то решит положить ваш сервер подобным способом (частым отправлением запросов), их быстрее кикнет сервером за превышение лимита пакетов (asklimit), нежели упадёт MySQL сервер.

    В общем, идея хоть и интересная (но автор её не ты, признайся :D), но не думаю, что все эти танцы с бубном того стоят. Есть достаточно крупных серверов, которые доказали, что от сохранения при изменении данных ничего серверу не станет. А помимо SA-MP есть куча примеров в виде сайтов с большой посещаемостью, которые так же работают через MySQL и не умирают.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #9
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    В общем, идея хоть и интересная (но автор её не ты, признайся :D), но не думаю, что все эти танцы с бубном того стоят. Есть достаточно крупных серверов, которые доказали, что от сохранения при изменении данных ничего серверу не станет. А помимо SA-MP есть куча примеров в виде сайтов с большой посещаемостью, которые так же работают через MySQL и не умирают.
    Изначально я видел такой код в одном говно рп моде)
    Потом в одной теме проскочило сообщение(вроде твоё) с таким предлогом,
    автор не я, просто увидел такие махинации и понравились, вот и советую

    Как Вы там все пишите нагрузки от частых использований мелочных функций не будет?))
    Ну а от таких проверок тем более так как это не функция которая вызывается из плагина или с набора функций samp
    Последний раз редактировалось vovandolg; 09.01.2017 в 15:28.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  10. #10
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Изначально я видел такой код в одном говно рп моде)
    Потом в одной теме проскочило сообщение(вроде твоё) с таким предлогом,
    автор не я, просто увидел такие махинации и понравились, вот и советую

    Как Вы там все пишите нагрузки от частых использований мелочных функций не будет?))
    Ну а от таких проверок тем более так как это не функция которая вызывается из плагина или с набора функций samp
    Либо ты вызываешь функцию, которая отправляет данные в плагин, который уже в своём, отдельном потоке переваривает эту информацию.
    Либо ты постоянно делаешь кучу непонятных проверок, после делаешь операции перезаписи значений в массивах и только потом вызываешь функцию, которая отправляет данные в плагин, который уже в своём, отдельном потоке переваривает эту информацию.

    Разница видна? :)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •