0

所以我一直在使用 Riot 的 API 开发一个 API 应用程序。而且我需要将大量 API 端点数据存储到 SQL 数据库中,以便从数据库中提取统计信息。

我已经测试了我能做的所有事情,没有拼写错误,没有连接错误,但由于某种原因,数据永远不会加载到服务器中,页面只是停留在刷新状态。

这最初让我认为这是一个无限循环,但是我测试了循环并且它不是无限循环,或者至少在我可以测试的范围内。

我的下一个想法是这个脚本只需要一段时间才能运行,所以我等了一个多小时,它仍然卡在加载页面上。

我什至还没有更新语句,但如果你们可以看看我的代码,看看你是否发现任何错误,或者即使有更好的方法来做到这一点,谢谢!

此外,如果您需要有关我的目标/布局的更多信息或问题,请随时要求澄清。

此外,出于显而易见的原因,我删除了 apiKey 和 db 凭据,如果您需要 API 密钥来测试脚本,它们可在https://developer.riotgames.com/获得

<?php
$data = [
    'IRON' => 'I',
    'IRON' => 'II',
    'IRON' => 'III',
    'IRON' => 'IV',
    'BRONZE' => 'I',
    'BRONZE' => 'II',
    'BRONZE' => 'III',
    'BRONZE' => 'IV',
    'SILVER' => 'I',
    'SILVER' => 'II',
    'SILVER' => 'III',
    'SILVER' => 'IV',
    'GOLD' => 'I',
    'GOLD' => 'II',
    'GOLD' => 'III',
    'GOLD' => 'IV',
    'PLATINUM' => 'I',
    'PLATINUM' => 'II',
    'PLATINUM' => 'III',
    'PLATINUM' => 'IV',
    'DIAMOND' => 'I',
    'DIAMOND' => 'II',
    'DIAMOND' => 'III',
    'DIAMOND' => 'IV'
];
function update_DB($param, $region)
{
    foreach ($param as $tier => $division) {
        $page = 1;
        while ($page >= 1) {
            $apiKey = '';
            $url = 'https://' . $region . '.api.riotgames.com/tft/league/v1/entries/' . $tier . '/' . $division . '?page=' . $page . '&api_key=' . $apiKey;
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_URL, $url);
            $output = curl_exec($curl);
            curl_close($curl);
            $arr = json_decode($output, true);
            if ($arr === []) { //Empty Quit Loop
                $page = 0;
            }
            if (count($arr) > 0) { //Not empty move to next page and store/update data
                $i = 0;
                while ($i < count($arr)) {
                    $conn = mysqli_connect("localhost", "root", "", "");
                    $leagueId = $arr[$i]['leagueId'];
                    $queueType = $arr[$i]['queueType'];
                    $tier = $arr[$i]['tier'];
                    $rank = $arr[$i]['rank'];
                    $summonerId = $arr[$i]['summonerId'];
                    $summonerName = $arr[$i]['summonerName'];
                    $leaguePoints = $arr[$i]['leaguePoints'];
                    $wins = $arr[$i]['wins'];
                    $losses = $arr[$i]['losses'];
                $stmt = $conn->prepare("INSERT INTO allusersna (leagueId, queueType, tier, rank, summonerId, summonerName, leaguePoints, wins, losses) VALUES (?,?,?,?,?,?,?,?,?)");
                if (!$stmt) {
                    echo 'ERROR INSERT STATEMENT';
                    exit();
                }
                $stmt->bind_param("ssssssiii", $leagueId, $queueType, $tier, $rank, $summonerId, $summonerName, $leaguePoints, $wins, $losses);
                $stmt->execute();
                $i++;
            }
            $page++;
        }
    }
}

}

4

0 回答 0