如何有效地在php中为这个表缓存mysql查询

时间:2011-09-22 15:21:17

标签: php mysql html css cakephp

我有一个Posts表,其中包含字段titlecontentsratingno_of_commentsauthor_id。当用户向帖子投票时,评级字段递减,反之亦然。

我也在缓存显示查询,显示最近的帖子,它与表Authors有关。问题是评级领域需要经常更新,即有很多赞成票和赞成票。所以每次用户上/下帖时我都需要重建缓存。我相信这是一种浪费,因为整个缓存数据中只有一个字段会更新。所以我想知道这个问题是否有任何解决方法。顺便说一句,我正在使用基于文件的缓存。

2 个答案:

答案 0 :(得分:0)

好的。因此,您的解决方案是向执行以下操作的PHP打开ajax请求:

<强> 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请求,并在你得到回复时更新页面。收到回复后,请打开一个新连接。

答案 1 :(得分:0)

如果您对数据结构进行了规范化,则可以缓存静态部分 - 即“发布”,具有“发布属性”或您决定使用的任何动态。

评论数量应通过计算“评论”表中的评论数量得出。

一个可靠的数据结构将在这里帮助你。