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

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

#82553 alex_lip 28 июл 2014, 07:10
Последнюю неделю часто не обновляются данные по игрокам. Крон запускался в 2-30. Потом пробовал переставить на 5-30 - те же ошибки.
2014-06-02 02:30: (WG) Successful get some data from WG.
2014-06-02 02:30: (WG) Try to load info on 88 players
2014-06-02 02:30: (Err) Not correct data for player 001 with ID : 1460237 ( Get current error from WG: (RATINGS_NOT_FOUND) )
2014-06-02 02:30: (Err) Not correct data for player 002 with ID : 3036691 ( Get current error from WG: (RATINGS_NOT_FOUND) )
Это проблема WG ?
#82555 alex_lip 28 июл 2014, 07:11
Подскажите пожалуйста - как мне выбрать всех бойцов одной роты? Насколько я понимаю эта информация не в базе лежит. Подскажите запрос please!
#82573 Exinaus 28 июл 2014, 11:50
alex_lip писал(а):Последнюю неделю часто не обновляются данные по игрокам. Крон запускался в 2-30. Потом пробовал переставить на 5-30 - те же ошибки.
2014-06-02 02:30: (WG) Successful get some data from WG.
2014-06-02 02:30: (WG) Try to load info on 88 players
2014-06-02 02:30: (Err) Not correct data for player 001 with ID : 1460237 ( Get current error from WG: (RATINGS_NOT_FOUND) )
2014-06-02 02:30: (Err) Not correct data for player 002 with ID : 3036691 ( Get current error from WG: (RATINGS_NOT_FOUND) )
Это проблема WG ?

Это проблема ВГ. Один из источников данных по игрокам не отдает данные.
Что бы вы понимали, данные о аккаунте игрока берутся из четырех источников (общие данные, техника, медали, рейтинги), и модуль проверяет целостность из всех четырех источников. Т.е. если по игроку получено 2 или 3 из 4-х типов данных, то данные считаются как не полученные.
В данном случае не работал метод API отдающий рейтинги игрока.
#82575 Exinaus 28 июл 2014, 12:06
alex_lip писал(а):Подскажите пожалуйста - как мне выбрать всех бойцов одной роты? Насколько я понимаю эта информация не в базе лежит. Подскажите запрос please!

Данные о ротах хранятся отдельно, в кэше.
В модуле эти данные доступны в переменной $company.

Структура данных там может немного избыточная, но это для простоты отображения в модуле и в админке, так что не обращайте внимания.
Вот что у меня записано о структуре переменной:
$company['tabs'] - в каких вкладках отображать информацию о ротах
$company['in_company'] - id всех игроков состоящих в ротах, без разбивки по ротам.
$company['by_id'] - массив игроков в ротах, в формате ключ - id игрока, значение - id роты.
$company['company_names'] - массив названия рот, в формате ключ - id роты, значение - название роты.
$company['listХ'] - массивы с игроками одной конкретной роты. Где Х - id роты.
#82581 alex_lip 28 июл 2014, 13:51
Я просто хочу отдельный php файл написать, где вывести бойцов конкретной роты в отдельную страницу на сайте. У Вас функции работы с кэш находятся в class Cache ?
Чтобы достучатся к массиву $company['listХ'] - надо сначала его проинициализировать.
Можете подсказать как лучше сделать?
#82582 Exinaus 28 июл 2014, 13:59
alex_lip писал(а):Я просто хочу отдельный php файл написать, где вывести бойцов конкретной роты в отдельную страницу на сайте. У Вас функции работы с кэш находятся в class Cache ?
Чтобы достучатся к массиву $company['listХ'] - надо сначала его проинициализировать.
Можете подсказать как лучше сделать?


Ну как-то вот так:
Код: Выделить всёinclude('{path_to_file}/function/cache.php');

$cache = new Cache({path_to_cache_folder}.'/cache/');

$company = $cache->get('company_CLANID',0,ROOT_DIR.'/cache/other/');


Только поменяйте CLANID на цифровой id нужного клана.
Ну и в списке роты указаны только id игроков, и если необходимы их ники, то их можно получить из кэша модуля, прочитав данные о составе клана, его можно получить вот так:
Код: Выделить всё$tmp = $cache->get('get_last_roster_'.$clan['id']);
#82586 alex_lip 28 июл 2014, 14:30
Вот попробовал - ничего не выводит ((
Код: Выделить всё<?
echo "start<br>";
if (file_exists(dirname(__FILE__).'/function/mysql.php')) {
        define('ROOT_DIR', dirname(__FILE__));
    }else{
        define('ROOT_DIR', '.');
    }
echo ROOT_DIR;   
include(ROOT_DIR.'/function/cache.php');

$cache = new Cache(ROOT_DIR.'/cache/');

$company = $cache->get('61231',0,ROOT_DIR.'/cache/other/');

foreach ($company as $value) {
    echo "$value.\n";
}
?>
#82591 Exinaus 28 июл 2014, 16:28
Т.е., получается если в строке
Код: Выделить всё$company = $cache->get('company_CLANID',0,ROOT_DIR.'/cache/other/');

заменить CLANID на id клана, то получится
Код: Выделить всё$company = $cache->get('61231',0,ROOT_DIR.'/cache/other/');

а куда "company_" потерялось?

ЗЫ И для вывода переменной, которая массив, я бы не советовал использовать foreach, лучше вот так:
Код: Выделить всёecho '<pre>';
print_r($company);
echo '</pre>';

print_r это дефолтная функция php для вывода массивов.
#82761 tunderberd 30 июл 2014, 12:12
В крон логе такая ошибка
(Err) Not correct data for player 001 with ID : 4289408 ( Get current error from WG: (RATINGS_NOT_FOUND) )

Что то опять у WG изменилось и ждать обновления модуля?

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

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

Реклама | Adv