Wordpress/PHP中的持久对象

Wordpress/PHP中的持久对象,php,performance,wordpress,caching,object-persistence,Php,Performance,Wordpress,Caching,Object Persistence,我想创建一组持久化对象,从数据库中加载它们的状态,然后在内存中持久化,以便Wordpress/PHP页面加载用作缓存内存对象。我可以想象这些对象的接口包括: initialise()-从数据库加载状态,并在服务请求之前执行所需的任何其他初始化功能 getter_foo()-PHP代码调用内存缓存响应的一系列getter方法 getter_bar()-PHP代码调用内存缓存响应的一系列getter方法 update()-由时间或事件驱动的进程调用,这些进程要求对象返回数据库并刷新其状态 我怀疑

我想创建一组持久化对象,从数据库中加载它们的状态,然后在内存中持久化,以便Wordpress/PHP页面加载用作缓存内存对象。我可以想象这些对象的接口包括:

  • initialise()-从数据库加载状态,并在服务请求之前执行所需的任何其他初始化功能
  • getter_foo()-PHP代码调用内存缓存响应的一系列getter方法
  • getter_bar()-PHP代码调用内存缓存响应的一系列getter方法
  • update()-由时间或事件驱动的进程调用,这些进程要求对象返回数据库并刷新其状态
我怀疑的两个技巧是:

  • 让主PHP进程alloc并保留这些对象的内存引用,以便它们在web事务/请求中保持固定在内存中,而无需每次对数据库重新初始化
  • 具有允许事务处理获得指向此对象的指针的机制

  • 有没有这样的解决方案的例子?我已经编程多年了,但我对Wordpress和PHP都很陌生,所以这可能是非常直接的。不确定。无论如何,我确实认识到,像redis和memcached这样的技术解决方案可能会实现类似的目标,但不那么优雅,也不涉及上下文。也就是说,如果没有简单的方法,我很乐意使用80/20规则。^)

    不可能在一个请求期间将数据存储在内存中,然后在另一个请求期间仅使用普通PHP从内存中读取数据。当然PHP进程使用内存,但是一旦您的请求完成,该部分内存就会被垃圾收集。这意味着第二个请求无法再次访问内存的前一部分


    你所暗示的,叫做缓存。简单地说,缓存意味着您保存了昂贵事务的输出以供以后重用,从而节省了该事务的成本。然后,您将使用什么作为后端来存储该输出取决于您或您现有的可用内容。如果要将其保存到RAM中,则需要类似Memcached的东西。您也可以将其存储在常规文件中,但由于正在访问硬盘驱动器,因此速度较慢。

    您查看过serialize吗?通常,这是在请求之间保持对象状态的好方法。我知道memcached和redis。我可能会使用它们,但我希望有一种像我所描述的那样的机制,因为它比memcached/redis这样的基础设施解决方案有很多好处。我想如果你是对的,没有办法做到这一点,那么这也意味着没有办法构建一个数据库管理层来保持与数据库的开放连接池数据库除非Wordpress足够聪明可以自己做这件事?在高事务性站点上,这是一个很大的好处,因为您可以维护连接,并从绑定变量中获得更多的重用。可以在一个请求中共享打开的连接。但我从未听说过在多个请求中共享它。如果你的DB有这么多的读取,我会尝试将查询结果缓存到MyCache中,并考虑数据库的主从设置,从数据库中读取一个奴隶。我想你可能是对的,Miljar。在我多年来参与的一些真正的大型应用程序中,池连接共享具有很大的价值,但这都是在memcached之前的时代。好处有两个:(1)打开和关闭业务逻辑和数据存储层之间的连接的成本很高;(2)数据库必须对类似结构的查询运行解释,而不是使用绑定变量来避免这种开销。我怀疑,使用memcached,您只需很少的努力就可以实现80/20规则,因此,在连续统的最后20%中花费精力是有意义的情况更少。我现在结束这个问题。谢谢你的意见。