Статистика

Svarog1

Новичок
Репутация
0 / 121
У кого-нибудь задваивается статистика? Или я один такой невезучий? стоит XGP 2.9.2
1. Причина задвоения не выявлена
2. Вместе со статистикой задваиваются и "Юзвери Онлайн" в Админке
3. Задваивается сама БД %)
4. Иногда получались затроения и зачетверения :)
5. При уменьшении количества строк в отображении статистики со 100 на одной страницы до 20 - статистика не двоится, но на странице показываются меньше 20(как должно быть) строк с юзверями...
6. по наивности в файл common.php
после
Код:
    if ( ( time() >= ( $game_config['stat_last_update'] + ( 60 * $game_config['stat_update_time'] ) ) ) )
    {
        include($xgp_root . 'adm/statfunctions.' . $phpEx);
ставил
Код:
doquery("TRUNCATE TABLE {{table}}", 'statpoints');
не помогает
7. судя по коду файлов common.php, statbuilder.php, statfunctions.php и еще парочки ... проблема должна курсировать и в 2.9.3 и в 2.9.4....
Что делать? :) у кого это было и кто нить справился с этим?)
 
Ты немного нетуда полез если чесно, все до ужаса просто :)
Файл common.php вызываеться при каждом клике юзера. Если юзеров много - кликов тоже много, соответственно возникает ситуация когда юзеры вызывают функцию с файла adm/statfunctions одновременно (практически одновременно, всмысле у первого она обрабатываеться и сразу у второго) - это вызвано тем, что функция работает со всех БД и медленная, вот и получаеться что иногда её вызывают одновременно 2, 3,4 юзера :) Отсюда и удвоение.

Все мои эксперементы пока закончились одним выводом - нужно прописывать функцию которая будет вызываеться cron-ном, тогда удвоение точно небудет.

Хотя я еще ищу вариат вызова и с common.php без удвоения.

П.С. - версия скрипта роли не имеет.
 
я тоже об этом думал... но как же получается тогда, что вставляя TRUNCATE TABLE таблица не очищается при каждом вызове функции каждым юзером?...

PS а насчет cron тоже есть мысль, но я пока плохо себе представляю как им пользоваться...
 
я тоже об этом думал... но как же получается тогда, что вставляя TRUNCATE TABLE таблица не очищается при каждом вызове функции каждым юзером?...

PS а насчет cron тоже есть мысль, но я пока плохо себе представляю как им пользоваться...

Таблица очищается... и заполняется по новой в этом и прикол.
Насчет крона- нужно делать отдельный пхп файл и запускать его с крона, а в файл внести все необходимое для обновления статы, в принципе несложно.
 
как раз из-за крона и в югамеле передалали под файлы,крон был давно и вызывал мёртвое зависание сервака при 10 онлайне...
Сейча испанци делают один крон файл, лёгкий но продуктивный, попробую взять наброски и попробуем допилить
 
Насчет крона- нужно делать отдельный пхп файл и запускать его с крона, а в файл внести все необходимое для обновления статы, в принципе несложно.
OS: WinServer 2003, поставил nnCron LITE, принцип работы вроде понятен... но не могли бы вы написать какой-нибудь короткий скриптик, чтоб его туда воткнуть... а то как вызывать приложения я понял, а запускать скрипты - нет... можно мне в личку, дабы не флудить. Спасибо.
 
Господа, прошу внимания... вроде бы у меня получилось, но учитывая тот факт, что знания мои находятся не на высоком уровне, прошу вас помочь мне проверить ...
ставлю высокий хайд пока что, как только пройдет 100% проверку тогда будет видно.
 
А смысл этого всего? в xgp 2.9.4 в админке прописывается, через какое время обновлять статистику и там ни чё незадваивается.
 
Давать аждому игроку возможность самому обновлять стату это не правильно в корне. Или оставьте эту возможность в админке или обновляйте инфу только по пользователювызывающему скрипт. Иначе так и будите дрочиться с проблемой не стоящей выеденого яйца
 
Давать аждому игроку возможность самому обновлять стату это не правильно в корне. Или оставьте эту возможность в админке или обновляйте инфу только по пользователювызывающему скрипт. Иначе так и будите дрочиться с проблемой не стоящей выеденого яйца

ИМХО верно,но и "обновляйте инфу только по пользователювызывающему скрипт" тоже неверно,можно прикинуть сколько игроков будут обновлятся каждые 10 минут и ужаснуться :)
 
Может стоит переписать статистику в корне ? Сделать ее динамической?
То есть, при постройке к примеру здания, сразу будет подсчитываться количество очков за стройку данного здания, также исследования, флот и оборона.

Страница статистики будет генерироваться запросом.
Тем самым всегда будет свежая информация о заслугах игроков.
 
в xgp 2.9.4 в админке прописывается, через какое время обновлять статистику и там ни чё незадваивается.

что-то я там такого не нашел...
у вас (в 2.9.4) так же идет обращение в обновление статистики в файле common.php

и если у вас не задваивается - вам реально везет... у меня при онлайне от 10 человек периодически это происходит. Бывает и при меньшем количеств людей.

Может стоит переписать статистику в корне ? Сделать ее динамической?
То есть, при постройке к примеру здания, сразу будет подсчитываться количество очков за стройку данного здания, также исследования, флот и оборона.

Страница статистики будет генерироваться запросом.
Тем самым всегда будет свежая информация о заслугах игроков.

Абсолютно согласен. Но...
1. ладно у меня не учитывается флот и оборона, но у тех, у кого учитывается, при большом количестве игроков в час пик, когда они постоянно строятся и постоянно летают другу к другу... это сколько же будет запросов в БД...
2. дело ведь не только в статистике, есть еще куча всего, что надо проверять с какой-то периодичностью без участия игрока, статистика - это просто для примера.
3. кто вообще это будет делать?... кому это надо?... и если надо, то узнаем ли мы об этом...
4. я сразу написал, что прошу просто проверить вместе со мной, как и что. специально все описал подробно... может это кому-то понадобиться, а может и нет, мне вот сейчас надо.
 
Абсолютно согласен. Но...
1. ладно у меня не учитывается флот и оборона, но у тех, у кого учитывается, при большом количестве игроков в час пик, когда они постоянно строятся и постоянно летают другу к другу... это сколько же будет запросов в БД...
2. дело ведь не только в статистике, есть еще куча всего, что надо проверять с какой-то периодичностью без участия игрока, статистика - это просто для примера.
3. кто вообще это будет делать?... кому это надо?... и если надо, то узнаем ли мы об этом...
4. я сразу написал, что прошу просто проверить вместе со мной, как и что. специально все описал подробно... может это кому-то понадобиться, а может и нет, мне вот сейчас надо.

to Svarog1 ДАБЛ пост запрещен!!! Используй редактирование, или цитируй все в одном сообщении!


по теме:
Почему ты думаешь что запросов будет больше чем сейчас есть?
Взять тот же час пик, здания не строятся за одну секунду!
При постройке того или иного элемента в бд заносится значение, в месте с этим запросом почему бы не заносить поинты, запросов больше не будет, он всего лишь увеличится в размере на 0 целых 0000002 тысячных миллиметра!!!
По той системе какая сейчас есть при той-же 1000 игроков в онлайне сервер будет судорожно обсчитывать каждого игрока, что вызывает хорошую нагрузку, а нам нагрузки не нужны, нужно максимально все облегчить.

из личного опыта:
При тестировании Угамеллы (версию не помню уже) и Иксновы 8 - 9 версий, и какой-то версии XGP(точно не скажу какая версия не помню).
Когда игроков было в онлайне около 60, в базе зарегистрировано около 2000 - 3000 к, сервер падал при подсчете статистики. И не мог адекватно все просчитать, ему тупо не хватало времени....

Уточню еще вот что, все перечисленные выше движки, были оптимизированы.
 
что-то я там такого не нашел...
у вас (в 2.9.4) так же идет обращение в обновление статистики в файле common.php

и если у вас не задваивается - вам реально везет... у меня при онлайне от 10 человек периодически это происходит. Бывает и при меньшем количеств людей
у меня онлайне минимум в обед 20 человек, и ни разу с статистикой небыло проблем, скорей вы при обновлении чтото из файлов пропустили. или базу.
п.с. в базе 3000+ уже накопилось. щас начали удолятся, так как вели удоление
 
ничего личного...
но давайте следующим ответом будет решение проблемы или хотя бы начало решения...
а то так болтать можно до бесконечности...
 
Svarog1, давайте будет, только вы меня конечно извените, но вы поставили хайд больше чем сами постов набрали, флудить по всему форуму, что бы добраться до вашего кода, и помочь вам найти ошибки и не точности ну уж сильно не хочется... такие хайды можно ставить на заведомо рабочие вещи, а на тест можно и без хайда...
 
А смысл этого всего? в xgp 2.9.4 в админке прописывается, через какое время обновлять статистику и там ни чё незадваивается.

Значит у тебя классный сервак и успевает обработать, но поверь - все ровно начнет задваиватся - чуть позже.


как раз из-за крона и в югамеле передалали под файлы,крон был давно и вызывал мёртвое зависание сервака при 10 онлайне...
Сейча испанци делают один крон файл, лёгкий но продуктивный, попробую взять наброски и попробуем допилить

Появилось время поправил файл статы и запускаю под Кроном - все отлично, нечего не виснет и даже игра немного растормозилась :)
 
comaw, тогда выкладывай, может на основе его выковыряют и остальные кроны.
Потому как они сейчас систему боя переписывают будет только осенью.
Там французы делают визуальные бои, и почему то многие ломанулись делать их,вместо правки багов(ну многие ето5-6 человек из 40 человек команды)
 
стата с кроном и без отличается лишь тем, что стата с кроном вызывается каждые n минут, а стата без крона вызываеться, при обновлении страницы обзора с проверкой времени вида, если время сейчас минус время обновления статы меньше чем время последнего обновления статы, то ничего не делаем, если же наооборот, обновляем стату... задвоение это результат вызова скрипта обновления одновременно несколькими игроками, в результате получаем двойное выполнение скрипта... с кроном, задвоений не бывает, а повисание сервока, это его слабость, если он с 10 онлайн не может выполнить просчет...
 
самый простой способ для тех у кого нет возможности юзать крон, можно просто поставить заглушку на выполнение скрипта обновления статы, при запуске скрипта нужно сделать так чтоб он проверял на наличие файла неважно какого и неважно где, если он существует то скрипт не выполняется, ну соответственно если его нет то вперёд на выполнение... напоминаю, это самый простой способ для тех кто не хочет или не может использовать крон... так же можно сделать ещё проверку через базу, записывать параметр в базу что-то на подобии "update_now_is_going = 1" и делать по нему проверку...
 

Похожие темы

Сверху