有没有更好的方法来查看新的评论?

时间:2014-06-16 作者:Paul

我有一些在客户端上运行的代码,每隔30秒左右检查一次新注释,如果发现新注释,就会提醒用户。

该检查对页面上的注释进行计数,并返回计数。检查注释的代码是:

check_for_new_comments() {
$sitewide = get_option( \'sitewide_mode\', 0 );   
$postID = $_POST[\'postID\'];
$postID = ( $sitewide ) ? \'\' : $postID ;

$comments_number = get_comments( array( \'post_id\' => $postID, \'status\' => \'approve\', \'type\' => \'comment\', \'count\' => true ) );

$response = array( \'count\' => $comments_number );wp_send_json( $response );

}
在客户机上,如果计数器大于上次检查的值,那么我调用一个函数,使用jscript中的以下命令获取缺少的注释。

function( commentCheck ) {

if ( commentOld === null ) {    
    commentOld = commentResponse;
}

if ( commentOld.count < commentResponse.count ) {

    commentGrab();
    commentOld = commentResponse;

}

}
我知道这个数字可以缓存,但在有大量评论的动态网站上(在繁忙的关系中,我可以在每篇文章中获得1000条评论,每分钟大约有100名访问者,这给我的服务器CPU带来了很大的压力)。我认为计算评论可能没有效率,我想知道比较最近评论的tiestamp是否更有效。

“计算评论数量,然后比较数量”是否比“比较最近评论的日期”更快?你能告诉我什么是更有效的方法吗?如果要比较日期,我该如何编码?

非常感谢

2 个回复
SO网友:funwhilelost

这是统计评论最有效的方法。通过使用get_comments_number 模板标记。它们都简化为一个简单的SQL查询,查询“count”。MySQL经过高度优化,可以在不扫描所有记录的情况下统计这些记录。

SO网友:Rarst

在这个容量下,任何Ajax请求都可能会在服务器上产生明显的负载,甚至在做任何事情之前。WP中的每个Ajax请求都必须完成一个完整的核心加载,这不是简单的操作。

除非您的需求发生变化(例如减少正在进行的轮询量),否则您可能应该从研究自定义Ajax处理程序开始,例如使用SHORTINIT 堆芯荷载。

结束