我有一些PHP代码,一旦按下下一个箭头,它基本上只是获取数据库中的下一个图像。但是在mywebsite上我有时可以在线点击超过600个用户,然后单击下一步。有什么方法可以将这个PHP代码更快地执行以更快地执行吗?
谢谢!
$nxtImage = mysql_query ("SELECT * FROM images WHERE active=1 and id>$id and section=$section ORDER BY id ASC LIMIT 1") or die (mysql_error());
$nxtrow = mysql_fetch_array($nxtImage);
$nxtnum = mysql_num_rows($nxtImage);
$nid = $nxtrow['id'];
$npicTitle = $nxtrow['img_title'];
$nimgLink = preg_replace("![^a-z0-9]+!i", "-", $npicTitle);
$nimgLink = strtolower($nimgLink);
答案 0 :(得分:6)
我要做的第一件事就是将查询更改为:SELECT `id`, `img_title` FROM images ...
,以确保您只抓住您需要的内容。我接下来要做的是在id, img_title, section, active
上构建一个覆盖索引,这样就不必读取数据页。
过去,获得更多硬件,:D
答案 1 :(得分:3)
您可以在服务器端开始一次获取所有图像,然后使用Javascript(例如使用JSON)将其传递给客户端。
然后,当一个人点击箭头时,您只需在Javascript中加载正确的图像(例如,使用下一个更大的数组索引)。
通过这种方式,您可以消除很多(可能按数量级排序)数据库查询,从而提高服务器性能。
答案 2 :(得分:1)
一旦您知道您的用户经常点击“下一步”,您就可以实施hashtag navigation,其中JavaScript已经简要介绍了下一个10,20张图片的参数,并使用动态内容执行导航,而不经常打扰PHP和MySQL。
此外,MySQL提供tunning parameters,您可以在其中增加key_buffer_size
和table_cache
的值,以告知您的服务器在内存中保留更多信息,以便更快地搜索和立即响应
我经常将其调整为使用服务器上大部分未使用的内存,因为未使用的内存是浪费的资源。
答案 3 :(得分:0)
您可以在表格中添加名为nextID的列。我知道,它打破了数据库规范化,但在极端情况下,你可能需要这些技巧来提高性能,以维持一个字段的价格。请注意,可以使用数据库触发器维护此新字段。