所以我一直在使用 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++;
}
}
}
}