Перейти к содержимому


Обсуждение практических вопросов использования Wargaming Public API


  • Пожалуйста, авторизируйтесь для того, чтобы ответить
Сообщений в теме: 3902

Hedeon #21 Отправлено 08 Окт 2013 - 16:17

    Старшина

  • Разработчики
  • 19972 боя
  • 559
  • [WG-A] WG-A
  • Регистрация:
    30.12.2010

Тема для обсуждения практических вопросов использования Wargaming Public API.

 

Полезные ссылки для начинающих знакомство с PAPI:

- Аутентификация методами PAPI: что это и с чем его едят.

- Как рассчитать рейтинг эффективности при помощи методов Public API?

- Использование PHP библиотеки CURL для выполнения запросов в API WG.

 

Если Вы нашли баг/недоработку то, пожалуйста, занесите информацию в наш баг-трекер.



Ivanerr #22 Отправлено 09 Окт 2013 - 11:04

    Старший сержант

  • Игроки
  • 7228 боев
  • 265
  • [LJ] LJ
  • Регистрация:
    19.10.2010

Просмотр сообщенияDrahtigel (09 Окт 2013 - 09:55) писал:

Всему есть предел, и реакции сервера, и пропускной способности 3G и Wifi, а так же канала до сервера (со всеми его задержками и багами), и т.д. и т.п. Разверните у себя базу с 8 млн записей внутри, причём не простую однотабличную простыню, а с десятком-другим таблиц, связанных меж собой, погоняйте простые и сложные запросы, оцените время реакции...

В их базе явно не 8 и даже не 80 миллионов записей, а куда больше.
Однако простейший запрос информации из БД выполняемый целую секунду говорит либо об искусственном ограничении, либо об крайне неправильном использовании БД.
Конечно есть шанс что база стоит на ноутбуке дворника, но я сомневаюсь  :teethhappy:
Одна секунда на игрока - это просто несерьёзно.

Drahtigel #23 Отправлено 09 Окт 2013 - 12:27

    Старший сержант

  • Игроки
  • 40117 боев
  • 333
  • [IS-23] IS-23
  • Регистрация:
    31.07.2011

Просмотр сообщенияIvanerr (09 Окт 2013 - 11:04) писал:

В их базе явно не 8 и даже не 80 миллионов записей, а куда больше.
Однако простейший запрос информации из БД выполняемый целую секунду говорит либо об искусственном ограничении, либо об крайне неправильном использовании БД.
Конечно есть шанс что база стоит на ноутбуке дворника, но я сомневаюсь  :teethhappy:
Одна секунда на игрока - это просто несерьёзно.
Гм. Там могёт быть не совсем простой запрос. Особенно если предположить, что отдаваемые данные повторяют структуру таблиц в БД. Там несколько вложений (так на вскидку) видно.

Сайт клана IS-23

 


Ivanerr #24 Отправлено 09 Окт 2013 - 16:46

    Старший сержант

  • Игроки
  • 7228 боев
  • 265
  • [LJ] LJ
  • Регистрация:
    19.10.2010
Блин.
Вот время страницы моего профиля. Там все данные о танках, которые отдаются API плюс ещё ТОННА другой информации.
Страница полностью отдалась за 480 мс.

Метод API, который берёт инфу ТОЛЬКО о танках, и который по своей сути должен быть гораздо быстрее отдаётся за секунду.

Получается, гораздо выгоднее не использовать API, а парсить html страницу профиля игрока.


Изображение

shizzard #25 Отправлено 09 Окт 2013 - 17:18

    Сержант

  • Игроки
  • 24482 боя
  • 122
  • [IMBSQ] IMBSQ
  • Регистрация:
    27.06.2010

Просмотр сообщенияIvanerr (09 Окт 2013 - 16:46) писал:

Блин.
Вот время страницы моего профиля. Там все данные о танках, которые отдаются API плюс ещё ТОННА другой информации.
Страница полностью отдалась за 480 мс.

Метод API, который берёт инфу ТОЛЬКО о танках, и который по своей сути должен быть гораздо быстрее отдаётся за секунду.

Получается, гораздо выгоднее не использовать API, а парсить html страницу профиля игрока.


Изображение

С чего вы взяли, что страница работает через API?
Свободное общение на тему разработки под WG Public API: xmpp://wg-papi@conference.jabber.ru

vb64 #26 Отправлено 09 Окт 2013 - 17:24

    Старшина

  • Игроки
  • 47658 боев
  • 792
  • Регистрация:
    27.04.2011

Просмотр сообщенияIvanerr (09 Окт 2013 - 16:46) писал:

Получается, гораздо выгоднее не использовать API, а парсить html страницу профиля игрока.
Вообщем, да. Но засада в том, что WG в начале лета этого года убрал со страницы игрока цифру количества побед на танке, оставив только процент. Это когда дизайн поменяли на "спидомерный".

Соответственно, пропала возможность считать винрейт на танке за нужный период. Поэтому лично мне придется кушать кактус использовать апи.
Панель управления кланом - Автоматический учет общей активности участников клана и их активности на ГК и УР, почасовые графики присутствия участников клана в игре, контроль посещаемости клановых мероприятий, формирование клановых рот, учет техники клана, динамическая статистика участников в целом по аккаунту и по моделям танков, новости клана на RSS поток и/или email, авторизация через wargaming.net OpenID и многое другое.

Ivanerr #27 Отправлено 09 Окт 2013 - 17:28

    Старший сержант

  • Игроки
  • 7228 боев
  • 265
  • [LJ] LJ
  • Регистрация:
    19.10.2010

Просмотр сообщенияshizzard (09 Окт 2013 - 17:18) писал:

С чего вы взяли, что страница работает через API?

Я написал неправильно  :smile:
"Там все данные о танках, которые отдаются API" следует читать как "Там те же данные о танках, которые отдаются API".
Т.е. данные берутся из одной БД.

shizzard #28 Отправлено 09 Окт 2013 - 18:22

    Сержант

  • Игроки
  • 24482 боя
  • 122
  • [IMBSQ] IMBSQ
  • Регистрация:
    27.06.2010

Просмотр сообщенияIvanerr (09 Окт 2013 - 17:28) писал:

Я написал неправильно  :smile:
"Там все данные о танках, которые отдаются API" следует читать как "Там те же данные о танках, которые отдаются API".
Т.е. данные берутся из одной БД.

Ну на самом деле не факт, что из одной базы.
Я вполне могу себе предположить, что API работает со своей базой, которая и обновляется чаще, чем закешированная страница игрока на сайте, и оптимизироваться будет именно под API. Хотя судя по времени отдачи кеширования на странице нет, но все же.
Свободное общение на тему разработки под WG Public API: xmpp://wg-papi@conference.jabber.ru

Drahtigel #29 Отправлено 10 Окт 2013 - 11:39

    Старший сержант

  • Игроки
  • 40117 боев
  • 333
  • [IS-23] IS-23
  • Регистрация:
    31.07.2011

Просмотр сообщенияIvanerr (09 Окт 2013 - 09:25) писал:

Неплохой результат? :ohmy:
Наверняка у тебя есть айфон/айпад/андроидфон.
Много там приложений, где для получения данных приходится ждать 30 секунд?
У меня клан в 61 рыло, извлечение "танковой" статистики по ним занимает 21 секунду. Опрашивается это всё 7-ю потоками (по 10 рыл в пачке, +последний запрос в 1-но рыло), делается по 2 запроса в секунду.  Пока экспериментирую с циферками. Лучший результат по 15 игроков, на 3 потока за секунду - 19-сек. Возможно уменьшить количество вызовов, если не тратить один запрос на 1-2х игроков, а забивать их  в последний отправляемый. Понятно, что запрос по всем характеристикам в любом случае займёт больше времени. Если кто подскажет вариант, как это сделать быстрее - буду признателен. Кстати попутно выяснил, что количество одновременных запросов (рамки тут не большие) оказывают сравнительно небольшое влияние на общее время опроса, куда больше зависит от числа запрашиваемых аккаунтов. Пока у числа 15 - наилучший результат по времени.

Сообщение отредактировал Drahtigel: 10 Окт 2013 - 11:58

Сайт клана IS-23

 


shizzard #30 Отправлено 10 Окт 2013 - 12:46

    Сержант

  • Игроки
  • 24482 боя
  • 122
  • [IMBSQ] IMBSQ
  • Регистрация:
    27.06.2010

Просмотр сообщенияDrahtigel (10 Окт 2013 - 11:39) писал:

Если кто подскажет вариант, как это сделать быстрее - буду признателен. Кстати попутно выяснил, что количество одновременных запросов (рамки тут не большие) оказывают сравнительно небольшое влияние на общее время опроса, куда больше зависит от числа запрашиваемых аккаунтов. Пока у числа 15 - наилучший результат по времени.

Так происходит потому что ваши запросы обрабатываются разными потоками на сервере. Судя по зависимости времени обработки O(N) от числа аккаунтов они вытаскиваются из базы последовательно. Если вы лупите в несколько потоков, запросы распараллеливаются. Так что в вашем случае, если игнорировать лимит на количество запросов в секунду, лучшим вариантом будет запрашивать данные параллельно, по одному игроку/клану в запросе. С учетом лимита цифры нужно изменять.
Если у вас лимит в 4 запроса в секунду, то оптимальным вариантом для вас будет выполнение пачек из 4 параллельных запросов, каждый из которых запрашивает данные о N сущностей так, чтобы каждый запрос выполнялся в районе одной секунды.
Свободное общение на тему разработки под WG Public API: xmpp://wg-papi@conference.jabber.ru

Drahtigel #31 Отправлено 10 Окт 2013 - 13:40

    Старший сержант

  • Игроки
  • 40117 боев
  • 333
  • [IS-23] IS-23
  • Регистрация:
    31.07.2011
В итоге полный опрос клана 18-19 секунд account/info, account/raitings, account/tanks - последние имеют максимальную задержку результата. Плюс косяк в собственном парсере, который сам по себе работает ещё секунд 10-15 (обработка данных начинается после возврата всех результатов).


Просмотр сообщенияshizzard (10 Окт 2013 - 12:46) писал:

Так происходит потому что ваши запросы обрабатываются разными потоками на сервере. Судя по зависимости времени обработки O(N) от числа аккаунтов они вытаскиваются из базы последовательно. Если вы лупите в несколько потоков, запросы распараллеливаются. Так что в вашем случае, если игнорировать лимит на количество запросов в секунду, лучшим вариантом будет запрашивать данные параллельно, по одному игроку/клану в запросе. С учетом лимита цифры нужно изменять.
Если у вас лимит в 4 запроса в секунду, то оптимальным вариантом для вас будет выполнение пачек из 4 параллельных запросов, каждый из которых запрашивает данные о N сущностей так, чтобы каждый запрос выполнялся в районе одной секунды.
Не выходит идеальных условий. Экспериментально получилось, что при запросе пачек менее или более 15 аккаунтов время обработки начинает увеличиваться. На фоне инфо и рейтинга танки выглядят узким местом, хотя откровенно говоря данных по ним не в пример больше отдаётся. Делаю отбор только по значимым полям. Хотя, возможно следует получать полную простыню, но тогда возрастёт нагрузка на парсер... Который и без того надо ковырять и править...

Сайт клана IS-23

 


shizzard #32 Отправлено 10 Окт 2013 - 13:50

    Сержант

  • Игроки
  • 24482 боя
  • 122
  • [IMBSQ] IMBSQ
  • Регистрация:
    27.06.2010

Просмотр сообщенияDrahtigel (10 Окт 2013 - 13:40) писал:

В итоге полный опрос клана 18-19 секунд account/info, account/raitings, account/tanks - последние имеют максимальную задержку результата. Плюс косяк в собственном парсере, который сам по себе работает ещё секунд 10-15 (обработка данных начинается после возврата всех результатов).



Не выходит идеальных условий. Экспериментально получилось, что при запросе пачек менее или более 15 аккаунтов время обработки начинает увеличиваться. На фоне инфо и рейтинга танки выглядят узким местом, хотя откровенно говоря данных по ним не в пример больше отдаётся. Делаю отбор только по значимым полям. Хотя, возможно следует получать полную простыню, но тогда возрастёт нагрузка на парсер... Который и без того надо ковырять и править...

Единственный способ решения проблемы в таком случае - сливать базу себе и запрашивать данные оттуда. Только так вы не будете зависеть от задержки ВГ (ну только что опосредованно, в смысле задержек в обновлении - держать базу в актуальном состоянии все же нужно). Все другие способы будут вас подводить. Сейчас задержка большая, завтра у них maintenance, потом формат ответа чуть изменили. Со сторонними ресурсами нужно работать аккуратнее.
Свободное общение на тему разработки под WG Public API: xmpp://wg-papi@conference.jabber.ru

Xp9kyc #33 Отправлено 11 Окт 2013 - 11:46

    Младший сержант

  • Игроки
  • 42934 боя
  • 53
  • Регистрация:
    29.10.2010
привет.
скопировал и попробовал у себя на веб-сервере запустить php скрипт из примера "Информация об игроке" из КР, работает почему-то наполовину, показывает только акк_id, ник и дату регистр., включил отображение ошибок в php и выявилось следующее:

Notice: Undefined index: xp in ......./test2.php on line 52
XP:

Notice: Undefined index: experience ......./test2.php on line 53
Battle average XP:

Notice: Undefined index: experience in ......./test2.php on line 56
Maximum XP:


судя по номерам ошибочных строк, ругается на вот эти из скрипта:

//52 строка
echo " <b>XP:</b> " . $value['experience']['xp'] . "<br/>";

//53 строка
echo "  <b>Battle average XP:</b> " . $value['experience']['battle_avg_xp'] . "<br/>";

//56 строка
echo "  <b>Maximum XP:</b> " . $value['experience']['max_xp'] . "<br/>";

т.е. получается в примере скрипта указаны несуществующие переменные запросов? или я где-то краблю?
помогите разобраться и исправить, плз.

thunderspb #34 Отправлено 11 Окт 2013 - 11:48

    Младший лейтенант

  • Бета-тестеры
  • 10118 боев
  • 812
  • [BD] BD
  • Регистрация:
    04.06.2010

Просмотр сообщенияXp9kyc (11 Окт 2013 - 11:46) писал:

привет.
скопировал и попробовал у себя на веб-сервере запустить php скрипт из примера "Информация об игроке" из КР, работает почему-то наполовину, показывает только акк_id, ник и дату регистр., включил отображение ошибок в php и выявилось следующее:

Notice: Undefined index: xp in ......./test2.php on line 52
XP:

Notice: Undefined index: experience ......./test2.php on line 53
Battle average XP:

Notice: Undefined index: experience in ......./test2.php on line 56
Maximum XP:


судя по номерам ошибочных строк, ругается на вот эти из скрипта:

//52 строка
echo " <b>XP:</b> " . $value['experience']['xp'] . "<br/>";

//53 строка
echo "  <b>Battle average XP:</b> " . $value['experience']['battle_avg_xp'] . "<br/>";

//56 строка
echo "  <b>Maximum XP:</b> " . $value['experience']['max_xp'] . "<br/>";

т.е. получается в примере скрипта указаны несуществующие переменные запросов? или я где-то краблю?
помогите разобраться и исправить, плз.
А почему бы не посмотреть то, что отдает сервер? А почему бы не воспользоваться API Expolorer? А почему бы... За Вас Ваш код никто не будет дебажить :)
Все, что вы хотели узнать про статистику онлайна с преферансом и куртизанками графиками покластерно и посерверно: https://stats.wotapi.ru/

Drahtigel #35 Отправлено 11 Окт 2013 - 11:55

    Старший сержант

  • Игроки
  • 40117 боев
  • 333
  • [IS-23] IS-23
  • Регистрация:
    31.07.2011
Эм... xp и battle_avg_xp идут из statistic.[clan/company/all], а max_xp из statistic. Скорее всего проблема в этом...

Сайт клана IS-23

 


Xp9kyc #36 Отправлено 11 Окт 2013 - 11:55

    Младший сержант

  • Игроки
  • 42934 боя
  • 53
  • Регистрация:
    29.10.2010
я просто только начинаю разбираться в wg api, поэтому и попросил помощи. еще раз повторяю - скрипт был знак в знак скопирован из примера в кабинете разработчика, т.е. он вроде как полностью рабочий, а у меня ошибки лезут.

Xp9kyc #37 Отправлено 11 Окт 2013 - 11:56

    Младший сержант

  • Игроки
  • 42934 боя
  • 53
  • Регистрация:
    29.10.2010

Просмотр сообщенияDrahtigel (11 Окт 2013 - 11:55) писал:

Эм... xp и battle_avg_xp идут из statistic.[clan/company/all], а max_xp из statistic. Скорее всего проблема в этом...

ок, спасибо за быстрый фидбэк. попробую покопать в этом направлении

Drahtigel #38 Отправлено 11 Окт 2013 - 11:59

    Старший сержант

  • Игроки
  • 40117 боев
  • 333
  • [IS-23] IS-23
  • Регистрация:
    31.07.2011
https://ru.wargaming...e/account/info/ - внимательно курим. Вообще разбираться и копировать - несколько разные занятия ;-)

Сайт клана IS-23

 


Xp9kyc #39 Отправлено 11 Окт 2013 - 12:03

    Младший сержант

  • Игроки
  • 42934 боя
  • 53
  • Регистрация:
    29.10.2010

Просмотр сообщенияDrahtigel (11 Окт 2013 - 11:59) писал:

https://ru.wargaming...e/account/info/ - внимательно курим. Вообще разбираться и копировать - несколько разные занятия ;-)
хех, а как по-вашему я должен был увидеть как это все работает? и наверное, в примерах не зря выложили ознакомительные скрипты, может быть как раз для таких новичков как я?

thunderspb #40 Отправлено 11 Окт 2013 - 12:04

    Младший лейтенант

  • Бета-тестеры
  • 10118 боев
  • 812
  • [BD] BD
  • Регистрация:
    04.06.2010

Просмотр сообщенияXp9kyc (11 Окт 2013 - 11:55) писал:

я просто только начинаю разбираться в wg api, поэтому и попросил помощи. еще раз повторяю - скрипт был знак в знак скопирован из примера в кабинете разработчика, т.е. он вроде как полностью рабочий, а у меня ошибки лезут.
Не стоит верить всему что написано... Я бы, первое что сделал, посмотрел что мне вообще от сервера приходит... а не бегом бежал на форум... К тому же есть полезный инструмент API Explorer, которых неотходя от кассы показывает что приходит от сервера сейчас. Не раз уже писалось, что документация сырая...

и как правильно было замечено, "копировать и разбираться разные вещи" ;)
Все, что вы хотели узнать про статистику онлайна с преферансом и куртизанками графиками покластерно и посерверно: https://stats.wotapi.ru/

thunderspb #41 Отправлено 11 Окт 2013 - 12:05

    Младший лейтенант

  • Бета-тестеры
  • 10118 боев
  • 812
  • [BD] BD
  • Регистрация:
    04.06.2010

Просмотр сообщенияXp9kyc (11 Окт 2013 - 12:03) писал:

хех, а как по-вашему я должен был увидеть как это все работает? и наверное, в примерах не зря выложили ознакомительные скрипты, может быть как раз для таких новичков как я?
https://ru.wargaming...i/api_explorer/ а это для кого? :)
Все, что вы хотели узнать про статистику онлайна с преферансом и куртизанками графиками покластерно и посерверно: https://stats.wotapi.ru/




Количество пользователей, просматривающих этот форум: 2

0 пользователей, 2 гостей, 0 анонимных