【发布时间】:2020-02-04 22:39:51
【问题描述】:
我正在尝试制作一个用户仪表板,它将生成我所有 37 个由不同玩家玩过的游戏帐户的报告。因此,对于每个 i 抓取 数据,然后计算它产生的奖励量。但为此我需要执行数百个 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);
?>
【问题讨论】:
-
听起来 API 限制了你的速率。
-
您是否有可能发出重复的
/cards/find?ids=$ui请求?您可能会从缓存机制中受益。
标签: php json performance api