Keeping Objects in Memory

时间:2012-12-17 作者:semyou

我用类构建了一个WordPress插件。每个项目类都是为特定用户创建的。我想做三件事:

在用户的请求之间为该用户保留项目对象的内存

  • 一旦用户注销或在某个过期时间后将其删除
  • 1 个回复
    SO网友:EAMann

    这是一个完美的用例Transients.

    在WordPress中,瞬态是短期数据对象。默认情况下,它们使用WordPress的内置WP\\U Object\\U Cache Object持久化到数据库。但是,您可以使用各种缓存插件(Batcache 是一个优秀的工具,它与Memcached一起工作,将瞬态存储在内存中。

    要设置瞬态,请调用set_transient( \'a unique name\', \'the data value\', \'time in seconds until it disappears\' );

    您的情况是使用项目对象。下面是您要做的:

    function get_project( $user_id ) {
        if ( ! $project = get_transient( \'project_\' . $user_id ) ) {
            // get_transient() returns false if the value is expired or doesn\'t exist.
            $project = new Project( $user_id );
    
            // Set the transient so that it lives for an hour
            set_transient( \'project_\' . $user_id, $project, 3600 );
        }
    
        return $project;
    }
    
    然后,在代码中,可以调用get_project() 每当需要引用当前项目时。如果它存在于缓存中,您将使用缓存的版本。如果没有,您可以构建一个新实例并将其保存到缓存中。如果要在检索对象后对其进行操作(并将这些操作保留在缓存中),那么还需要做很多事情,但这是我留给您的练习。

    结束

    相关推荐

    Loop within a loop?

    我在我的页面上使用了几个自定义的wp\\u查询循环,第一个循环从某个类别检索新闻,然后用permalink显示其中的一个小摘录。第二个是另一个wp\\u查询,它获取带有几个高级自定义字段的自定义帖子类型。问题是,我想在第二个循环中使用另一个循环,从新闻部分获取3篇文章,并带有缩略图(基本上与第一个循环相反,它将获取所有其他类别)。在阅读了无数关于循环的文章后,我不知道如何在第二个循环中创建“嵌套”循环。我相信这必须很简单,看起来很容易做到。下面是我的代码,其中去掉了很多html。<?php