优化网站之后台垃圾评论细节处理
今天查看后台评论,发现半天打不开,到后台面板去查看apache错误,发现我又对不起小张了。 :arrow: 不过问题很好解决,而且觉得有推广的价值,记录下来吧。 首先看下后台的错误日志,基本都是超时,超时说明神马,服务器被DDOS了,有这个可能性,但是呢,ping后发现还是18~25ms,丢包率0,所以排除,那么最大的可能性就是死循环,或者远程访问超时。 死循环这种这么给力的事情,除了之前09年的残留代码干过一次,还真没发生过第二次。 因为使用了avatar站内缓存,而生成站内的avator缓存又需要进行远程copy,远程服务器正常还好,如果一旦反映比较慢,加上请求次数比较多的话,本地脚本超时那是果断滴!
[Wed Feb 01 03:24:00 2012] [error] Script timed out before returning headers: edit-comments.php
[Wed Feb 01 03:24:01 2012] [error] Script timed out before returning headers: index.php
[Wed Feb 01 03:24:04 2012] [error] Script timed out before returning headers: index.php
[Wed Feb 01 03:24:10 2012] [error] Script timed out before returning headers: index.php, referer: http://soulteary.com/
[Wed Feb 01 03:24:14 2012] [error] Script timed out before returning headers: index.php, referer: http://soulteary.com/wp-admin/edit-comments.php
[Wed Feb 01 03:24:33 2012] [error] Script timed out before returning headers: index.php
[Wed Feb 01 03:24:36 2012] [error] Script timed out before returning headers: index.php
[Wed Feb 01 03:25:18 2012] [error] Script timed out before returning headers: index.php
[Wed Feb 01 03:25:25 2012] [error] Script timed out before returning headers: index.php
[Wed Feb 01 03:26:25 2012] [error] Script timed out before returning headers: index.php
既然知道了这点,那么怎么解决呢。原则上来说在哪出现的问题,就在哪里解决问题。 这次是访问后台评论菜单后,才出现的网站反映速度慢、脚本超时吧,那么就修改这里好了。 后台的评论列表TABLE是由class-wp-comments-list-table.php控制的,那么就找你的麻烦了。 打开文件,发现构造函数中有一句中枪的。
class WP_Comments_List_Table extends WP_List_Table {
var $checkbox = true;
var $pending_count = array();
function __construct() {
global $post_id;
$post_id = isset( $_REQUEST['p'] ) ? absint( $_REQUEST['p'] ) : 0;
if ( get_option('show_avatars') )
add_filter( 'comment_author', 'floated_admin_avatar' );
parent::__construct( array(
'plural' => 'comments',
'singular' => 'comment',
'ajax' => true,
) );
}
add_filter( ‘comment_author’, ‘floated_admin_avatar’ ); 这句Hook低调的外表掩饰不住它那闷骚的心,果断找floated_admin_avatar这个函数。 comment.php脚本只有4kb,一瞬间就浏览完了,看到了这个函数的原型
function floated_admin_avatar( $name ) {
global $comment;
$avatar = get_avatar( $comment, 32 );
return "$avatar $name";
}
或许你会说,这里木有神马问题啊,但是你木有看错,问题就是出在这里. 就是它,两眼不分忠奸,一味的加载avator图片,导致咱的脚本超时- -! 所以呢,今天就要和你过不去了,但是看在它任劳任怨这么多个版本的份上,小小惩戒一下即可。
function floated_admin_avatar( $name ) {
global $comment;
if ('spam'==$comment->comment_approved){return false;}
$avatar = get_avatar( $comment, 32 );
return "$avatar $name";
}
发现区别了嘛,在它请求访问全局变量$comment这个object后,对$comment中的comment_approved属性进行检查。 如果属性是SPAM,也就是垃圾评论,直接返回flase(垃圾评论还要啥头像…) 以上就是缓存头像后,垃圾评论会引起wordpress后台评论打开过慢的解决方法。 有不明白的盆友,欢迎留言~转载的话,留个出处,你好我好,大家好~