3

我有一些 PHP 代码,一旦按下下一个箭头,它基本上只会获取数据库中的下一个图像。然而,在我的网站上,我有时可以让 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); 
4

4 回答 4

6

我要做的第一件事是将查询更改为 : SELECT `id`, `img_title` FROM images ...,以确保您只获取您需要的内容。接下来我要做的是建立一个覆盖索引,id, img_title, section, active这样它就不必读取数据页。

过去,获得更多硬件,:D

于 2013-07-03T18:13:19.620 回答
3

您可以在服务器端一开始就获取所有图像,然后以 Javascript(例如使用 JSON)将其传递给客户端。

然后,每当有人单击箭头时,您只需在 Javascript 中加载正确的图像(例如,使用下一个更大的数组索引)。

这样,您将消除大量(可能是数量级)的数据库查询,从而提高您的服务器性能。

于 2013-07-03T18:15:40.763 回答
1

一旦您知道您的用户将经常单击“下一步”,您就可以实现标签导航,其中 JavaScript 已经简要介绍了接下来 10、20 个图像的参数,并使用动态内容执行导航,而无需打扰 PHP 和 MySQL很经常。

此外,MySQL 提供了调整参数,您可以在其中增加 和 的值,key_buffer_size以便table_cache告诉您的服务器将更多信息及时保存在内存中,以便更快地搜索和立即响应。

我通常将其调整为使用服务器上大部分未使用的内存,因为未使用的内存是一种浪费的资源。

于 2013-07-03T18:31:09.313 回答
0

您可以在表中添加一个名为 nextID 的列。我知道,它破坏了数据库规范化,但在极端情况下,您可能需要这些技巧以维护字段为代价来提高性能。请注意,可以使用数据库触发器来维护这个新字段。

于 2013-07-03T18:17:44.187 回答