如何在php中高效缓存此表的mysql查询
我有一个如何在php中高效缓存此表的mysql查询,php,mysql,html,css,cakephp,Php,Mysql,Html,Css,Cakephp,我有一个Posts表,其中包含标题,内容,评级,无评论,作者id。当用户对帖子投下否决票时,评分字段将递减,反之亦然此外,我正在缓存显示查询,该查询显示最近的文章,并且与表作者相关。问题是评级字段需要经常更新,即有大量的上升票和下降票。因此,每次用户上下帖子时,我都需要重建缓存。我认为这是一种浪费,因为整个缓存数据中只有一个字段被更新。所以我想知道有没有解决这个问题的办法。顺便说一句,我正在使用基于文件的缓存。好的。因此,您的解决方案是向执行以下操作的PHP打开ajax请求: 未经测试 whil
Posts
表,其中包含标题
,内容
,评级
,无评论
,作者id
。当用户对帖子投下否决票时,评分字段将递减,反之亦然此外,我正在缓存显示查询,该查询显示最近的文章,并且与表
作者相关。问题是评级字段需要经常更新,即有大量的上升票和下降票。因此,每次用户上下帖子时,我都需要重建缓存。我认为这是一种浪费,因为整个缓存数据中只有一个字段被更新。所以我想知道有没有解决这个问题的办法。顺便说一句,我正在使用基于文件的缓存。好的。因此,您的解决方案是向执行以下操作的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请求,并在收到回复时更新页面。收到回复后,打开一个新连接。好的。因此,您的解决方案是向执行以下操作的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请求,并在收到回复时更新页面。收到回复后,打开一个新连接。如果您规范化了数据结构,您将能够缓存静态部分,即“Post”,具有“Post属性”或您决定使用的任何动态部分
评论数量应通过计算“评论”表中的评论数量得出
一个可靠的数据结构将在很大程度上帮助您。如果您规范化了数据结构,您将能够缓存静态部分,即“Post”,具有“Post属性”或您决定使用的任何动态部分
评论数量应通过计算“评论”表中的评论数量得出
坚实的数据结构将在很大程度上帮助您。如果您规范化了数据结构,您将能够缓存静态部分,即“Post”,具有“Post属性”或您决定使用的任何动态部分。如果您规范化了数据结构,您将能够缓存静态部分,即“Post”,具有“Post Attributes”或您决定使用的任何东西都是动态的。那么,我需要将查询拆分为多个查询吗?但是php重建结构(即为每个帖子找到正确的评级)不是会困难得多吗,因此需要额外的处理。不。暂时忘记评分,抓取其他所有内容并构建页面。现在您可以抓取评分并通过从表中仅选择评分
动态计算出来。哦,等等。我在头版显示了一个帖子列表,其中我需要评分和帖子。那么您需要做什么他?如果评级正在更新,您希望更新页面而不重新加载?在技术上是正确的,但我会缓存最近的帖子,即,而不是从数据库中获取最近的帖子(使用select命令,这相当耗时)对于每个请求,我都会从缓存中检索列表。我只会在提交新帖子时更新缓存。那么,我是否需要将查询拆分为多个查询?但php重建结构(即为每个帖子找到正确的评级)会不会困难得多,因此需要额外的处理。不。暂时忘记评分,抓取其他所有内容并构建页面。现在您可以抓取评分并通过从表中仅选择评分
动态计算出来。哦,等等。我在头版显示了一个帖子列表,其中我需要评分和帖子。那么您需要做什么他?如果评级正在更新,您希望更新页面而不重新加载?在技术上是正确的,但我会缓存最近的帖子,即,而不是从数据库中获取最近的帖子(使用select命令,这相当耗时)对于每个请求,我都从缓存中检索列表。我只在提交新帖子时更新缓存。我没有完全理解它(似乎很多)。你能将它翻译到我的案例中吗?我没有完全理解它(似乎很多)。你能将它翻译到我的案例中吗?