一切正常,唯一的问题是加载速度很慢。加载包含265个图像的页面需要7秒钟。图像不在远程服务器上,它们是缩略图。它们也以真实的高度/宽度显示,因此服务器不必调整它们的大小。
它不应该是getimagesize(),因为在页面的前一次迭代中,每个图像都有一个getimagesize()函数,并且没有问题加载。
我能找到的唯一可能是问题的是数据库。这是设置:
表专辑:
| id | naam | urlnaam | actief |
表格照片:
| id |网址|分机|描述|专辑|
因此来自fotos的albumid链接到相册中的id。 这是代码:
$album = mysql_real_escape_string($_GET['fx2']);
mysql_select_db('user_fotos');
$i = 0;
$sql = mysql_query("SELECT a.naam, b.url, b.ext, b.description, b.id FROM albums AS a LEFT JOIN fotos AS b ON a.id = b.albumid WHERE a.urlnaam = '$album'");
while($row = mysql_fetch_assoc($sql)){
if($i == 0){
echo "Album: {$row['naam']}<br />";
echo "<table><tr>";
}
if($i % 4 == 0){echo "</tr><tr>";}
echo "<td align='center'>";
$photourl = "http://www.mysite.com/fotos/$album/thumbs/" . $row['url'] . $row['ext'];
$dimensions = getimagesize($photourl);
$breedte = $dimensions[0];
$lengte = $dimensions[1];
if($breedte == '120'){$aspect="width='120px' height='{$lengte}px'";}else{$aspect="height='120px' width='{$breedte}px'";}
echo "<div class='imageHolder' style='width:{$breedte}px; height:{$lengte}px;' onClick=\"parent.location='$album/{$row['id']}'\" /><img $aspect src='http://www.mysite.com/fotos/$album/thumbs/" . $row['url'] . $row['ext'] . "' alt='{$row['description']}' /></div>";
echo "</td>";
$i++;
}
echo "</tr></table>";
答案 0 :(得分:2)
正如其他人和我自己提到的从远程网址获取imagesize()将涉及获取图像,从而减慢脚本速度: 因为我可以看到你使用实际尺寸所以不需要实际获取尺寸,你也可能对相册变量有一些XSS问题: 试试这个,你得到相同的结果,但速度要快得多:
<?php
$album = mysql_real_escape_string($_GET['fx2']);
mysql_select_db('user_fotos');
$sql = mysql_query("
SELECT a.naam, b.url, b.ext, b.description, b.id
FROM albums AS a
LEFT JOIN fotos AS b ON a.id = b.albumid
WHERE a.urlnaam = '$album'");
$i = 0;
while($row = mysql_fetch_assoc($sql)){
if($i == 0){
echo "<p>Album: {$row['naam']}</p>";
echo "<table><tr>";
}
if($i % 4 == 0){echo "</tr><tr>";}
echo "<td align='center'>";
echo "<div class='imageHolder' onClick=\"parent.location='".htmlentities($album)."/{$row['id']}'\" /><img src='./fotos/".htmlentities($album)."/thumbs/" . $row['url'] . $row['ext'] . "' alt='{$row['description']}' /></div>";
echo "</td>";
$i++;
}
echo "</tr></table>";
?>
答案 1 :(得分:0)
我认为图像本身也不是动态生成的?我建议您在将图像加载到数据库时执行getimagesize()
,然后创建宽度/高度列以保存昂贵的文件操作。另外,做一些html缓存。
答案 2 :(得分:0)
可能是getimagesize($ photourl)让脚本慢下来
您的查询正常
您可以轻松查看脚本:
在php代码中使宽度和高度为const并再次运行脚本,这样你就可以知道哪一行使脚本运行缓慢