Я пытаюсь создать список фильмов, где указано название фильма, и я пытаюсь получить рейтинги IMDB из URL (базы данных) и кода работает.Но моя проблема в том, что если у меня в списке 50 фильмов, этот код делает 50 различных вызовов API OMDB, и это очень сильно замедляет мой сайт.
Так как я могу хранить / кэшировать рейтинги?Я не хорош для кеша вообще.Спасибо:)
if (($row["imdb"] != "") AND (strpos($row["imdb"],'imdb')) AND
(strpos($row["imdb"],'title'))) {
$imdbID = ltrim(strrchr($row["imdb_url"],'tt'),'tt');
$imdbID = preg_replace("/[^A-Za-z0-9]/", "", $imdbID);
$omdbapi_key = 'API_KEY';
$url = file_get_contents("https://www.omdbapi.com/?i=tt" . $imdbID . "&apikey=" . $omdbapi_key);
$omdb = json_decode($url, true);
$imdb_rating = "<a target='_blank' href='https://www.imdb.com/title/tt" . $imdbID . "'>Rating: " . $omdb['imdbRating'] . " / 10</a>";
Теперь я могу написать файл кэша только для одного фильма.Я не знаю, как я могу добавить несколько вызовов API фильмов в одном файле.У меня есть форма, где я добавляю фильм (название, imdb URL).Я думаю, что мне нужно переписать весь файл, когда я добавлю новый фильм.
Обновление:
$cacheFile = 'cache' . DIRECTORY_SEPARATOR . md5($url);
if( file_exists($cacheFile))
{
$omdb = json_decode(file_get_contents($cacheFile), true);
}
else
{
$url = file_get_contents("https://www.omdbapi.com/?i=tt".$imdbID."&apikey=" . $omdbapi_key);
file_put_contents($cacheFile, $url);
$omdb = json_decode($url, true);
}