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


How to efficiently cache mysql query in php for this table

我有一个Posts表,包含字段title, contents, rating, no_of_comments, author_id。当用户对帖子投否定票时,评级字段将递减,反之亦然。

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

如果你规范化你的数据结构,你将能够缓存静态部分-即"Post",有"Post属性"或任何你决定使用,是动态的。

注释数应该通过计算"comments"表中的注释数来得出。

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

未经考验的

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请求,并在得到回复时更新该页。当您收到回复时,打开一个新的连接。