去评论
dz插件网

分享个小知识,帝国CMS评论分表新评论更新缓存

饾暦饾枎饾枒饾枏饾枂饾枅饾枑
2026/01/11 07:38:08
分享个小知识,帝国CMS评论分表新评论更新缓存?小编一memcached缓存做例子。为了方便复用我们定义两个函数,一个函数能生成key键值名与SQL的数组。另外一个就不用多说了哈,很明显就是新的评论删除这个key键值名就可以了。
  1. //生成评论分表缓存信息(缓存键值名+拼接SQL语句)function getPlCacheKey($pldatatbs, $pubid, $order = '') {global $dbtbpre, $public_r;$biaoship = $public_r['add_pcurl'] ?: 'meiweny';$biaoshi = str_replace(['http://','https://','/','www.','.'], "", $biaoship);$fenbiaopl = explode(',', $pldatatbs);$unionQuery = '';for ($i = 1; $i < count($fenbiaopl)-1; $i++) {$sql = "select plid, saytime, sayip, username, zcnum, fdnum, userid, saytext, fdnum, floornum, replypl from {$dbtbpre}enewspl_{$fenbiaopl[$i]} where pubid='$pubid'";$unionQuery = $i == 1 ? $sql : $unionQuery . " union all " . $sql;}$finalSql = $unionQuery . $order; $cacheKey = 'pc' . $biaoshi . '_pinglun_' . md5($finalSql);return ['key' => $cacheKey,'sql' => $finalSql];}
  1. //删除评论分表缓存function deletePlCache($cacheKey) {global $memcache;if ($memcache === null) {echo "Error: Memcache实例为空!";return false;}return $memcache->delete($cacheKey);}
不用讲,这两个东西还是放在/e/class/userfun.php里面哈。接下来我们就在评论发布成功那个文件plfun.php加上如下语句(ecmsEmptyShowKey($keyvname);//清空验证码)下面增加
  1. $hcpagenum = isset($_POST['hcpagenum']) ? (int)$_POST['hcpagenum'] : $public_r['pl_num'];$hcorder = ' order by plid desc  limit 0,'.$hcpagenum;$hcResult = getPlCacheKey($plsetr['pldatatbs'], $pubid, $hcorder);deletePlCache($hcResult['key']);
接下来就是多表读取的index.php,($order=" order by ".$addorder."  limit $offset,$line";)下面增加
  1. $plsqlarray = getPlCacheKey($plr['pldatatbs'], $pubid, $order);$plSql = $plsqlarray['sql'];
至此,完美实现了帝国CMS评论分表新有新的评论更新缓存