そこで私は、Riot の API を使用した API アプリに取り組んできました。また、大量の API エンドポイント データを SQL DB に格納して、DB から統計情報を取得できるようにする必要があります。
できることはすべてテストしましたが、スペルミスも接続エラーもありませんでしたが、何らかの理由でデータがサーバーにロードされず、ページが更新されません。
これにより、最初は無限ループだと思いましたが、ループをテストしたところ、少なくともテストできる限り、無限ループではありませんでした。
次に考えたのは、このスクリプトの実行にはしばらく時間がかかるということでした。そのため、1 時間以上待っても、ページの読み込みでスタックしたままになりました。
まだステートメントを更新することすらできていませんが、私のコードを見て、何か問題があるかどうか、またはこれを行うためのより良いアプローチがあるかどうかを確認していただければ、ありがとうございます!
また、私の目標/レイアウトについてさらに情報や質問が必要な場合は、お気軽にお問い合わせください.
また、明らかな理由から 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++;
}
}
}
}