我有一些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); 发布于 2013-07-04 02:13:20
我要做的第一件事是将查询更改为:SELECT `id`, `img_title` FROM images ...,以确保您只获取所需的内容。我要做的下一件事是在id, img_title, section, active上构建一个覆盖索引,这样它就不必读取数据页面。
除此之外,获取更多硬件,:D
发布于 2013-07-04 02:15:41
您可以在服务器端一开始获取所有图像一次,然后在Javascript中将其传递给客户端(例如,使用JSON)。
然后,每当有人点击箭头时,你只需在Javascript中加载正确的图像(例如,具有下一个更大的数组索引)。
通过这种方式,您可以消除大量(可能按数量级排序)的数据库查询,从而提高服务器性能。
发布于 2013-07-04 02:31:09
一旦你知道你的用户会经常点击“下一步”,你就可以实现hashtag navigation,在那里JavaScript会被告知接下来10到20个图像的参数,并使用动态内容执行导航,而不需要经常麻烦PHP和MySQL。
此外,MySQL还提供了tunning parameters,您可以在其中增加key_buffer_size和table_cache的值,以便告诉您的服务器在内存中保留更多的信息,以便更快地搜索和即时响应。
我通常会调优它以使用服务器上大多数未使用的内存,因为未使用的内存是一种浪费的资源。
https://stackoverflow.com/questions/17455276
复制相似问题