分享各种网络资源
是我乃至整个互联网的精髓所在
 您目前所在位置: 站点首页 » WordPress » 代码 » 数据库中成千上万的”transient”改如何处理
+ 2

数据库中成千上万的”transient”改如何处理

  • 进入数据库
  • 数据库查询
  • 问题原因
  • 今天在WordPress论坛上面看到乐一个名为Database overrun with 1000’s of “transient” feed, dash, timeouts, etc (3 posts)的文章,进去看了一下之后,发现这个文章正好是我需要的。

    简单的说,就是数据库因为时间长了,会产生很多过时的缓存文件,可能是导航缓存,可能是菜单缓存等等,如果你发现自己的数据库正在不断增加,体积组件增大的话,那么你有必要考虑一下可能就是这个问题了。

    此类情况一般显示为以下的情况:

    • _transient_feed_mod_ (long string of letters/numbers)
    • _transient_timeout_dash_ (long string of letters/numbers)
    • _transient_timeout_feed_ (long string of letters/numbers)
    • _site_transient_timeout_browser_ (long string of letters/numbers)

    也就是在你的数据库中的wp_options中会存在以上类似的条目,数量如果不是很多,那么可能就是正常的,如果数量非常多,并且很多类似timeout的文字出现,那么证明,你该清清你的数据库了。

    在进行下面任何一个操作之前请一定并且确定你备份过你的数据库,如果觉得不放心,备份整个站点也是可以的,如果因为操作出现问题,丢失数据,我只能说,很抱歉了。

    那么如何清理呢?这里我就以阿里云为例说说该如何处理:

    进入数据库

    首先我们需要做的就是进入数据库,那么如何进入数据库呢?
    数据库中成千上万的”transient”改如何处理-BanYuner

    点击管理就可以进入控制台了,进入控制台之后再按照下面的图片进入数据库管理:
    数据库中成千上万的”transient”改如何处理-BanYuner

    那么点击管理之后我们就可以看到数据库登陆界面了,我们进去就可以了。

    数据库查询

    进入数据库之后,我们需要做的就是开始查询我们需要删除的数据了,同样的,按照下面的图片以及文字进行操作:
    数据库中成千上万的”transient”改如何处理-BanYuner
    数据库中成千上万的”transient”改如何处理-BanYuner

    点击确定之后,你就可以看到结果了,鉴于我已经删除了,所以暂时没有这个文件。大家看到了文件之后,如果符合上面的文件名格式的话,那么可以考虑删除了。

    问题原因

    为什么会出现这样的问题,我个人也不知道,国外的貌似也讨论的很多,我这里引用一段文字,大家能看明白的就看,看不明白的尽量能去理解就好了:

    WordPress uses DB entries called _transients to cache certain data. Cached entries are by default, things like RSS info, when cron last run, etc. If you use a plugin like Google Analytics Dashboard (GAD hereafter) though, you also get cached data relating to that. Unfortunately, either due to a bug in WordPress, or something left out of GAD, this cached info doesn’t seem to be deleted after it’s designated expiration time/date (_transients have a set expiration time, but they don’t seem to matter for GAD set transients).

    这位用户,觉得可能是因为WordPress的bug或者是GBA造成的,但是确切原因他自己也不知道。

    同样的,这里附上一段代码,我目前还没有尝试使用过,据说可以自动删除过期的这些文件,但是不一样有用,甚至可能造成数据库崩溃等等。如果你是一个折腾的朋友,那么请一定一定一定备份数据库。

    add_action( 'wp_scheduled_delete', 'delete_expired_db_transients' );
    function delete_expired_db_transients() {
    global $wpdb, $_wp_using_ext_object_cache;
    if( $_wp_using_ext_object_cache )
    return;
    $time = isset ( $_SERVER['REQUEST_TIME'] ) ? (int)$_SERVER['REQUEST_TIME'] : time() ;
    $expired = $wpdb->get_col( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout%' AND option_value < {$time};" );
    foreach( $expired as $transient ) {
    $key = str_replace('_transient_timeout_', '', $transient);
    delete_transient($key);
    }
    }
    

    上面的代码直接添加到functions.php中即可。

    关注我们 打赏 分享此文

    微信扫码,关注我们

    扫码,支持我

    数据库中成千上万的”transient”改如何处理

    支付宝(点击图片切换)

    扫码,支持我

    数据库中成千上万的”transient”改如何处理

    微信(点击图片切换)

    扫码,手机看

    数据库中成千上万的”transient”改如何处理
    匿名

    个人评价:┃草根博主┃站点无技术含量┃文章内容不够吸引人┃转载内容随处可见┃资源均来自网络┃ 分享是我的宗旨,也是这个站点存在意义,分享的东西你现在可能不需要,但是我相信只要在某个时间你需要的时候能在这里找到,那么我就是成功的

    相关推荐

    • WordPress基础教程-文章内容中如何添加音频文件

      WordPress基础教程-文章内容中如何添加音频文件

      目前基础教程已经基本完毕了,每篇文章都是用自己的语言写出来的,有兴趣查看其他教程的用户可以前往这里查看所有相关教程:教程合集 添加音频文件还...

      点击查看
    • WordPress评论上方显示评论用户列表

      WordPress评论上方显示评论用户列表

      一段时间之前,我在我的博客里面添加了下面的功能,这个功能我一开始觉得貌似没有人会喜欢或者说会显得比较多余,但是今天一个朋友问我如何实现这个功...

      点击查看
    • WordPress自动截取文章首段限定字数做为摘要

      WordPress自动截取文章首段限定字数做为摘要

      今天一个朋友问我这个问题,说实话,我也不像百度了,所以直接把 DUX 的方法介绍给大家了,我个人还是比较看好这个方法的。 DUX 实现这个功...

      点击查看
    数据库中成千上万的”transient”改如何处理
    8 + 5 =