php - 如何缓存多个 imdb 评分结果
问题描述
我正在尝试制作电影名称的电影列表,并且我正在尝试从 url(数据库)和代码作品中获取 imdb 评级。但我的问题是,如果我在列表中有 50 部电影,那么这段代码会进行 50 次不同的 omdb api 调用,这会大大降低我的网站速度。
那么我如何存储/缓存评级?我根本不适合缓存薄。谢谢 :)
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);
}
解决方案
推荐阅读
- vue.js - vue单文件组件导入scss intellisense
- maven - H2 控制台在我的笔记本电脑上找不到实体,但可以在其他人身上找到
- javascript - 我在使用 JavaScript 的手风琴时遇到问题
- android - 反应本机 fbsdk 构建错误找不到方法实现()
- html - 使用 rvest 将复杂的 html 文件读入 R
- emacs - Emacs模式函数参数类型不一致
- python - 如何使用 Django 通道对 AsyncConsumer 进行多线程处理
- firefox - 为什么此代码在控制台中有效,但在 WebExtensions 中无效?
- linux - 检查shell脚本中的数字是否为十六进制而不指定字符数限制[bash]
- c# - HTML CSS ASPTable“被窃听”?