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

数据库中成千上万的”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简易集成Markdown教程

    WordPress简易集成Markdown教程

    今天首先在群里面看到一个用户询问是否有方法将Markdown集成到主题里面去,后来我一想,这个所谓的Markdown确实是很多人提到 ...

    点击查看
  • WordPress制作简易年度总结页面

    WordPress制作简易年度总结页面

    今天早些时候已经制作一个类似112博客导航的页面,具体可以详见:

    点击查看
  • WordPress通过短代码显示指定文章内容

    WordPress通过短代码显示指定文章内容

    今天在一个WordPress交流群里面看到一个群友问一个问题,我个人方面也是很感兴趣,这个问题就是如何通过“新建文章栏输入链接 ...

    点击查看
  • 禁用WordPress 4.7版本的PDF预览功能

    禁用WordPress 4.7版本的PDF预览功能

    之前的文章我们也介绍了,关于WordPress 4.7版本中,新增了一个预览PDF的功能,详见:

    点击查看
  • WordPress获取文章的第一张图片并且显示

    WordPress获取文章的第一张图片并且显示

    关于这类的文章我们已经介绍过两种方法了,两种方法都不一样,但是适合自己的才是最好的,虽然今天我要介绍的方法可能不适合 ...

    点击查看
数据库中成千上万的”transient”改如何处理
7 + 6 =
  • 昵称 (必填)  
  • 邮箱 (必填)
  • 网址 (选填)