【问题标题】:How to expire a wordpress transients如何使 wordpress 瞬态过期
【发布时间】:2017-04-22 08:21:31
【问题描述】:

我想编写更新查询来过期瞬态。我会在 wordpress 选项表中将他们的时间更新为 1。

我有以名称re_compare 开头的瞬态,并在其参数更改后休息。

我的更新查询是

$wpdb->update( 
    'options', 
    array( 
        'option_value' => '1',  // string

    ), 
    array( 'option_name' => '%re_compare%' )

);

它不工作。基本上我想删除/过期已经存在的瞬态。

但如果我从选项表中删除瞬态,它们仍会显示在瞬态管理器插件中。所以想将它们的过期时间设置为 1 秒。

【问题讨论】:

    标签: wordpress transient


    【解决方案1】:

    不建议通过纯 SQL 从选项表中删除或修改瞬态。为什么?因为数据库实际上是存储瞬态的默认回退位置,而不是主要位置。如果有任何可用的对象缓存,则瞬态存储在那里,而不是数据库中。因此,在您的情况下,很可能是这种情况 - 您正在从选项表中删除它们,但它们实际上是从对象缓存中读取的。

    一般来说,您不必担心瞬态过期。 WordPress 有一个垃圾收集器,可以自动清除它们。

    如果瞬态数据变得陈旧并且您需要在它过期之前对其进行更新,请使用 API 函数:

    delete_transient( 'your_transient_name' );
    

    还请注意,过期时间是瞬态可以存在的最长时间段。在那段时间之后,它将永远不会返回存储值。但是,由于对象缓存驱逐、数据库升级等原因,它可能在到期时间之前很久就无法使用了。

    所以,简而言之:

    • 过期时间是未来瞬态调用停止返回值的最大时间点
    • 由于其他原因,它可能在到期时间到来之前很久就丢失了

    使用瞬变的经验法则是:

    1. 使用 API 函数设置瞬态
    2. 将过期时间设置为您绝对不希望它再有效的时间
    3. 如果您的数据发生变化,请使用 API 函数将其删除(并且很可能会再次重新生成)
    4. 或者等它自然过期
    5. 稍后将由 WP 进行垃圾收集
    6. 不要期望它们在到期时间到来之前始终可供您使用。不能保证它们会持续存在。

    【讨论】:

      猜你喜欢
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      相关资源
      最近更新 更多