如何优化api调用PHP

时间:2018-03-29 20:02:49

标签: php api riot

我工作(为了好玩),使用API​​(Riot API),我做了一些东西来检索匹配历史(它在游戏中)。我有一个问题,一切都很好,但我不知道如何优化它,我的意思是:每次用户刷新页面时我都会打电话,这需要很长的时间。我试着用AJAX调用它,但没有找到一个好方法,AJAX找不到我的对象。

以下是代码:

$match_history = [];
$api = "";

if (!empty($region)) {
    try {
        $api = new App\Library\RiotAPI\RiotAPI([
            App\Library\RiotAPI\RiotAPI::SET_KEY             => 
App\Config::API_KEY,
            App\Library\RiotAPI\RiotAPI::SET_CACHE_RATELIMIT => true,
            App\Library\RiotAPI\RiotAPI::SET_CACHE_CALLS     => true,
            App\Library\RiotAPI\RiotAPI::SET_REGION          => 
App\Library\RiotAPI\Definitions\Region::getRegion($region),
        ]);
    } catch (\Exception $e) {
        // die($e->getMessage());
    }
}

if ($api) {
// Insert current rank etc...
try {
    $summoner = $api- 
>getSummonerByName(App\Repository\UserRepository::getInstance()- 
>getUserDetail($_SESSION['user']['id'], 'summoner_name'));
} catch (\Exception $e) {
    $summoner = null;
}
// Match history
if (!empty($summoner)) {
    try {
        $matches = $api->getRecentMatchlistByAccount($summoner->accountId);

        // For every matches
        foreach ($matches as $match) {
            $a_match = $api->getMatch($match->gameId);

            if ($a_match->gameType === "MATCHED_GAME") {
                $gameCreation = date("d-M-Y H:i:s", substr($a_match- 
>gameCreation, 0, 10));
                if ($gameCreation >= date("d-M-Y", 
strtotime($user['created_at']))) {
                    // Get the participant ID of the customer
                    foreach ($a_match->participantIdentities as 
$participantIdentity) {
                        if ($participantIdentity->player->currentAccountId 
=== $summoner->accountId) {
                            $participantId = $participantIdentity- 
>participantId;
                        }
                    }

                    // Get stats of the participant
                    foreach ($a_match->participants as $participant) {
                        if ($participant->participantId === $participantId) 
{
                            $match_history[$match->gameId]['gameCreation'] = 
$gameCreation;
                            $match_history[$match->gameId]['championId'] = 
$participant->championId;
                            $match_history[$match->gameId]['spells'] 
['spell1'] = $participant->spell1Id;
                            $match_history[$match->gameId]['spells'] 
['spell2'] = $participant->spell2Id;
                            $match_history[$match->gameId]['win'] = 
$participant->stats->win;
                            $match_history[$match->gameId]['kills'] = 
$participant->stats->kills;
                            $match_history[$match->gameId]['deaths'] = 
$participant->stats->deaths;
                            $match_history[$match->gameId]['assists'] = 
$participant->stats->assists;
                            $match_history[$match->gameId]['goldEarned'] = 
$participant->stats->goldEarned;
                            $match_history[$match->gameId] 
['totalMinionsKilled'] = $participant->stats->totalMinionsKilled;
                            $match_history[$match->gameId]['items']['item0'] 
= $participant->stats->item0;
                            $match_history[$match->gameId]['items']['item1'] 
= $participant->stats->item1;
                            $match_history[$match->gameId]['items']['item2'] 
= $participant->stats->item2;
                            $match_history[$match->gameId]['items']['item3'] 
= $participant->stats->item3;
                            $match_history[$match->gameId]['items']['item4'] 
= $participant->stats->item4;
                            $match_history[$match->gameId]['items']['item5'] 
= $participant->stats->item5;
                            $match_history[$match->gameId]['items']['item6'] 
= $participant->stats->item6;
                        }
                    }
                }
            }
        }

    } catch (\Exception $e) {
        // die($e->getMessage());
    }
 }
}

我想知道是否有以下方法: - 在后台运行它,没有AJAX或类似的东西:记住X时间的match_history,然后在X时间之后,再次进行呼叫用户刷新页面。

感谢您的帮助! 最诚挚的问候。

0 个答案:

没有答案