Вопросы, советы, возможные модификации и вообще все про модуль статистики кланов

Модератор: Exinaus, shw

#47535 Edrard 13 дек 2013, 16:19
В общем, хочу всех предупредить, что сейчас данный параметр фактически потерял свою актуальность, так как теперь в статистике игрока updated_at изменяется по своим, не ведомым законам. Саппорт дал вот такое пояснение:

Информация об аккаунте автоматически обновляется достаточно часто по ряду различных причин, не зависимо от действий пользователя.

С уважением,

Команда поддержки разработчиков

Wargaming.net
#51678 abagrov 14 янв 2014, 10:26
А если в качесте костыля использовать нечто такое:
Код: Выделить всёselect updated_at from col_players where all_battles=(select max(all_battles) from col_players where nickname='[nickname]') and nickname='[nickname]' limit 1

Т.е. по сути выявить первый день с максимальным кол-вом боёв для конкретного игрока.

Есть другой вариант, но потребует добавления столбца (например lastbattle_at) в col_players. При обработке крона сравнить кол-во боёв игрока с предыдущим кроном и если они совпадают, то скопировать старое содержимое lastbattle_at, если нет, то скопировать в это поле updated_at.
#51687 abagrov 14 янв 2014, 11:27
Готовое решение по 1-ому методу для 3.0.3:
1.gif


16.01.2014
- добавил контроль минимальной даты
- изменил округление дней отсутствия к минимальному целому (ранее было мат. округление)
15.01.2014
- переработал под один общий скул запрос, вместо запросов по каждому игроку
- поправил ошибку (отсутствовал ~16000дней) по новым игрокам в клане
(1.9 КБ) Скачиваний: 251


зы для функционирования необходим работающий крон (крон данные)
#51693 Surik33 14 янв 2014, 11:59
abagrov писал(а):Готовое решение по 1-ому методу:
1.gif

roster.zip


Выдает такую ошибку:

Array
(
[0] => 42S02
[1] => 1146
[2] => Table 'clanstat300.defs_col_players' doesn't exist
)

Error on file /var/www/wot/clan_stat-300/tabs/roster.php, on line: 47

Code: select updated_at from defs_col_players where all_battles= (select max(all_battles) from defs_col_players where nickname='OberstDD') and nickname='OberstDD' limit 1;
#51699 abagrov 14 янв 2014, 12:36
Surik33 писал(а):
abagrov писал(а):Готовое решение по 1-ому методу:
1.gif

roster.zip


Выдает такую ошибку:

Array
(
[0] => 42S02
[1] => 1146
[2] => Table 'clanstat300.defs_col_players' doesn't exist
)

Error on file /var/www/wot/clan_stat-300/tabs/roster.php, on line: 47

Code: select updated_at from defs_col_players where all_battles= (select max(all_battles) from defs_col_players where nickname='OberstDD') and nickname='OberstDD' limit 1;

Блин! Настроил для себя и оттестил на себе =) Забыл, что префиксы ещё надо учесть разные. Файл поправил, перекачайте.
#51707 Exinaus 14 янв 2014, 13:47
Чисто ради оптимизации, раз уж вы начали делать. Могу дать совет не дергать данную информацию по каждому игроку, а получить ее скопом за один запрос:
Код: Выделить всёSELECT updated_at, account_id
FROM `col_players` p,
(
SELECT max( all_battles ) AS maxb, account_id
FROM `col_players`
GROUP BY account_id
) m
WHERE p.all_battles = m.maxb
AND p.account_id = m.account_id


Ну и соотв вы получите дату и id игрока. Можно провернуть в foreach и создать более удобный массив с результатами, для более удобного доступа, а можно использовать сразу.
#51829 abagrov 15 янв 2014, 06:45
Luxeon писал(а):Паказывает вот так

Новобранцев в крон базе нет, поэтому возникает ошибка с ~16000дней - это я поправлю. Отсутствует 0 дней специально не стал отображать, дабы не загромождать таблицу.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Реклама | Adv
cron