2011-09-22 46 views
2

我有一个包含字段titlecontentsratingno_of_commentsauthor_id一个Posts表。当用户低估帖子时,评分字段递减,反之亦然。

另外我缓存显示查询,它显示最近的帖子,它与表Authors有关。问题在于评级领域需要经常更新,即有很多上涨和下降。所以我需要重建缓存每次用户上/下的帖子。我认为这是浪费,因为整个缓存数据中只有一个字段被更新。所以我想知道是否有任何解决方法这个问题。顺便说一句我正在使用基于文件的缓存。如何高效缓存MySQL查询在PHP该表

+0

如果您规范化了数据结构,您将能够缓存静态部分 - 即“Post”,拥有“Post Attributes”或您决定使用的任何动态部分。 – diagonalbatman

回答

0

好的。所以,你的解决办法是打开一个Ajax请求的PHP是执行以下操作:

UNTESTED

while (array_pop(mysql_fetch_array(mysql_query("SELECT count(*) FROM `posts` WHERE `ID` = '$latest_id_prediction'"))) == 0) { 
    sleep(10); 
} 
echo array_pop(mysql_fetch_array(mysql_query("SELECT * FROM `posts` WHERE `ID` = '$latest_id_prediction'"); 

这将检查每10秒,如果有一个新的职位,如果有,它会回复帖子信息。你所做的就是在没有超时的情况下向这个页面发出ajax请求,并且当你收到回复时更新页面。当你得到答复时,打开一个新的连接。

+0

因此,我是否需要将查询拆分为多个查询?但是,如果php重新构建结构(即为每个帖子找到正确的评分)难道不会很困难,因此需要额外的处理。 – shahalpk

+0

不可以。暂时忘掉评分,抓住一切并建立页面。现在您可以获取评分,并通过从表格中选择“评分”来动态计算出评分。 –

+0

哦等一下。即时消息显示在首页的职位列表,我需要评分和职位。 – shahalpk

0

如果您规范化了数据结构,那么您将能够缓存静态部分 - 即“Post”,具有“Post Attributes”或您决定使用的任何动态部分。

评论数量应通过计算“评论”表格中的评论数量来派生。

一个坚实的数据结构将帮助你在这里很多。

+0

我不确定我是不是很擅长它,你能建议一些文章吗? – shahalpk

+0

当然试试这个: http://www.phlonx.com/resources/nf3/ – diagonalbatman

+0

我不完全明白它(看起来很多)。你能把它翻译成我的案子吗? – shahalpk