我正在尝试制作一个用户仪表板,它将生成不同游戏玩家玩过的所有 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);
?>
您在第一次通话中就获得了信息。
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] 删除。
我来说两句