一次处理数百个 API 请求

阿皮特·帕蒂达尔

我正在尝试制作一个用户仪表板,它将生成不同游戏玩家玩过的所有 37 个游戏帐户的报告。因此,对于每个我抓取数据,然后计算它产生的奖励数量。但为此,我需要执行数百个 api 请求,并且由于 max_exec_time 限制为 30 秒,它给了我一个致命错误。并且我将时间重置为 3000,但它在大约 2400(40 分钟)内完成。我可以在每个帐户的10分钟内用笔纸计算。所以,我需要一种快速的方法来进行 api 调用。谢谢



首先它会获取用户在一周内收集的卡片(通常是 35-40 张),然后检查每张卡片的稀有度和金箔(金色或普通)。如果是黄金,则保存到 $isgold 数组。但我只是检查了黄金。有 40 个电话,我总共有 37 个帐户。所以,当我点击获取报告时,它必须进行一些 1300 次 API 调用,这似乎不太好。有没有其他更好的方法来做到这一点......?

如果有那么请分享它。

这是我的 php 函数

<?php
$json = json_decode(file_get_contents("https://steemmonsters.com/cards/collection/iampolite"), 1);
    $cards = $json['cards'];
    $usercards = array();
    $isgold = array();
    
    foreach ($cards as $card) {
        if($card['player'] == 'iampolite' ) {
            $usercards[] = $card;
            
            foreach($usercards as $key=>$usercard) {
                $uid = $usercard['uid'];
                $json = json_decode(file_get_contents("https://steemmonsters.com/cards/find?ids=$uid"), 1);
                $data = $json['0']['gold'];
                if($data == true){
                    $isgold[] = $uid;
                }
            }
        }
    }
print_r(count($isgold));
echo "<br><br>";
print_r($usercards);
?>
db1975

您在第一次通话中就获得了信息。

https://steemmonsters.com/cards/collection/iampolite

{
  "player": "iampolite",
  "cards": [
    {
      "player": "davemccoy",
      "uid": "G1-1-I0SED3J72O",
      "card_detail_id": 1,
      "xp": 200,
      "gold": true,
      "edition": 1,
      "market_id": null,
      "buy_price": null,
      "last_used_block": 40381744,
      "last_used_player": "iampolite",
      "last_used_date": "2020-01-30T13:14:06.000Z",
      "last_transferred_block": null,
      "last_transferred_date": null,
      "alpha_xp": null,
      "delegated_to": "iampolite",
      "delegation_tx": "e38c7919f1e4cd6537b21323e9d8efd3d500c8b9",
      "skin": null,
      "level": 4
    },
    {
      "player": "davemccoy",
      "uid": "G1-2-ICCA0EHX8G",
      "card_detail_id": 2,
      "xp": 200,
      "gold": true,
      "edition": 1,
      "market_id": null,
      "buy_price": null,
      "last_used_block": 40381744,
      "last_used_player": "iampolite",
      "last_used_date": "2020-01-30T13:14:06.000Z",
      "last_transferred_block": null,
      "last_transferred_date": null,
      "alpha_xp": null,
      "delegated_to": "iampolite",
      "delegation_tx": "e38c7919f1e4cd6537b21323e9d8efd3d500c8b9",
      "skin": null,
      "level": 4
    },
    {
      "player": "davemccoy",
      "uid": "G1-3-REN59OW45C",
      "card_detail_id": 3,
      "xp": 200,
      "gold": true,
      "edition": 1,
      "market_id": null,
      "buy_price": null,
      "last_used_block": 40380988,
      "last_used_player": "iampolite",
      "last_used_date": "2020-01-30T12:36:06.000Z",
      "last_transferred_block": null,
      "last_transferred_date": null,
      "alpha_xp": null,
      "delegated_to": "iampolite",
      "delegation_tx": "e38c7919f1e4cd6537b21323e9d8efd3d500c8b9",
      "skin": null,
      "level": 4
    },...

所以你可以直接获取信息:

<?php
$json = json_decode(file_get_contents("https://steemmonsters.com/cards/collection/iampolite"), 1);
    $cards = $json['cards'];
    $usercards = array();
    $isgold = array();

    foreach ($cards as $card) {
        if($card['player'] == 'iampolite' ) {
            $usercards[] = $card;

            foreach($usercards as $key=>$usercard) {
                $uid = $usercard['uid'];

                if($usercard['gold'] == true){
                    $isgold[] = $uid;
                }
            }
        }
    }
print_r(count($isgold));
echo "<br><br>";
print_r($usercards);
?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用RxJS处理数百个请求而不会崩溃?

一次创建数百个文档?

静态Google Map API中的数百个图钉

gmail api批处理请求以一次获取多个消息golang

将多个请求合并为一个请求,并在Angular 2中仅命中一次api

使用Google的Text to Speech API一次执行多个请求时,仅获取最后一个请求的音频

可以向数百个站点发出卷曲请求被某些主机视为攻击吗?

数百个来自 socket.io 的轮询请求,应用程序真的很慢

python-使用请求从数百个网页中获取内容

使用GitHub API确定对master的最后一次提交是否是合并请求请求的结果?

Stripe Payment API 一次又一次地发送令牌请求

@ ngrx / effects API请求处理

api获取请求,处理404

一次处理Express请求

如何使用Python FastAPI和Asyncio在几秒钟内将数百个请求发送到URL?

Rails - 一次更新数百个字段,捕获事务失败,返回错误但保留成功的事务

如何根据每 3 秒更新一次的道具每分钟发出一次 api 请求?

如何确定用户在解析服务器中最后一次 API 请求的时间戳?

使用Vue中的获取一次发出多个API请求

为什么asp.net web api请求第一次需要时间?

在Google Apps脚本中提取多个api请求,一次解析

如何只在React中一次请求API数据,而不是每次访问都呈现页面?

在 Python 3 中每 x 秒发出一次 API 请求

是否可以获取合并请求的最后一次提交 sha?GITLAB API

Delphi COM服务器一次处理一个请求

接收并发异步请求并一次处理一个

排队WCF请求的最佳方法,以便一次只处理一个

WSO2 API Manager正在将数百个“发布者” HTML文件保存到目录

如何通过Ajax API处理多个请求?