【问题标题】:JSON/PHP - RIOT API - How to retrieve datasetsJSON/PHP - RIOT API - 如何检索数据集
【发布时间】:2014-11-24 00:05:40
【问题描述】:

我正在为大学做一个大数据项目。我正在为英雄联盟使用 RIOT 的 API。我想从他们的 api 中收集所有玩家的名字以及他们的部门、等级、LP、胜利。每个地区可能有 2500-10000 名玩家。我没能找到解决方案,因为它每次都对单个查询很愚蠢。

这怎么可能解决?这是从我自己的 EUW 部门获得所有玩家的代码。也许forloop?

<?php
    header('Content-Type: text/html; charset=utf-8');

    ini_set("display_errors", "1"); error_reporting(E_ALL);

    $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, 'https://euw.api.pvp.net/api/lol/euw/v2.5/league/by-summoner/31827832?api_key=key');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        $response = curl_exec($ch);

        curl_close($ch);

    $json = json_decode($response, true);

    $json = array_pop($json);
    foreach($json[0]['entries'] as $entry){
        // print_r($json);
                echo $entry['playerOrTeamName'] . ',' . $json[0]['tier'] . ',' . $entry['division'] . ',' . $entry['leaguePoints'] . ',' . $entry['wins'] . "<br/>";
            }
?>

问题是,这些数据不能与其他数据混合。我必须逐个检索分区,而不是同时检索所有分区。是否可以使用 fput_csv() 将值以逗号分隔? ? 我在这方面没有经验(以前没有做过这类工作),非常感谢任何帮助。如果您需要这方面的更多信息,请询问。我希望我们能解决这个问题。我迷路了。

PS:上面显示的当前代码位于http://20ff.net

【问题讨论】:

  • 我不明白,你为什么不使用数据库?
  • 你能解释一下你想说什么吗?我不能跟着你。我尝试尽可能多地收集它们以将它们加载到数据可视化工具中。

标签: php ajax json curl


【解决方案1】:

据我了解,一旦获取数据,您不知道如何处理数据,并且您想稍后再次获取它,而不必每次都调用 API。

您需要的是“持久存储”,因此您可以将数据存储在某个地方,并且能够在合理的时间内轻松地检索它。有很多方法可以做到这一点,如您所提到的,CSV 文件就是其中之一。

对于这个项目,我建议你使用一个真实的数据库(PHP 大部分人使用 MySQL),显然我们不能教你关于 SO 的整个概念,但你可以阅读它here

【讨论】:

  • 好的,我现在明白你的意思了。但是调用 api 50.000 次是不人道的,因为 riot api 没有调用每个区域的所有玩家信息的功能(我可以理解这种负载可能会杀死他们的服务器)。我想我必须改变计划,因为这不会正常进行。这些数据的存储不是问题,问题是如何有效地获取这些数据。
  • 我不确定他们的 API 是如何工作的,但肯定有另一种方式,因为有些英雄联盟网站拥有玩家数据库,而且我确信他们没有调用 API 50k 次。
  • 我认为与他们联系是明智的。 Dan Caissy 非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
相关资源
最近更新 更多