我在这里有一点这个非常迟钝的PHP。不是毫秒的缓慢,但导致页面在8秒内加载缓慢。
它正在做的是从第三方电影数据库中获取带有json字符串的Actor和Director信息,用于页面上20部电影中的每一部。
我做了一些测试并确定我的代码必须正常。这是连接数据库20次就是问题。
除了从20减少页面上的电影数量外,还有什么我可以做的吗?
echo '<h3>Starring</h3>
<p>';
$num_actors = 0;
$films_result = $tmdb->getMovie($film->id);
$films = json_decode($films_result);
foreach ($films as $film) {
foreach ($film->cast as $cast) {
if ($cast->job == 'Actor') {
echo '<a href="person.php?id=' . $cast->id . '">' . $cast->name . '</a> ';
$num_actors++;
if ($num_actors == 5)
break;
}
}
echo '</p>
<h3>Director</h3>
<p>';
foreach ($film->cast as $cast) {
if ($cast->job == 'Director') {
echo '<a href="person.php?id=' . $cast->id . '">' . $cast->name . '</a> ';
}
}
echo '</p>';
我不知道它是否会有所帮助,但这是我正在进行的电话会议中的数据库文档页面 - http://api.themoviedb.org/2.1/methods/Movie.getInfo
答案 0 :(得分:1)
不要两次遍历$film->cast
个对象(演员然后导演)。相反,循环一次,将html结果保存在变量中,然后在循环结束时输出该变量。
答案 1 :(得分:1)
有几个选择:
答案 2 :(得分:0)
假设getMovie只返回1部电影的结果是否安全?如果是这样你可以摆脱foreach $ films循环,但我们暂时不会这样做。
不要循环两次 - 如果你找到导演然后进入下一个循环......
echo '<h3>Starring</h3>
<p>';
$films_result = $tmdb->getMovie($film->id);
$films = json_decode($films_result);
foreach ($films as $film) {
$i=0;
foreach ($film->cast as $cast) {
if ($cast->job == 'Director') {
$dir = $cast;
continue;
}
if ($cast->job == 'Actor') {
echo '<a href="person.php?id=' . $cast->id . '">' . $cast->name . '</a> ';
if ($i%5 == 5) break;
}
$i++;
}
echo '</p>
<h3>Director</h3>
<p>';
echo '<a href="person.php?id=' . $dir->id . '">' . $dir->name . '</a> ';
echo '</p>';
这个脚本只显示最多5个演员 - 请注意它可能不是你想要的