Wordpress / PHP中的持久对象

时间:2012-05-14 12:26:48

标签: php performance wordpress caching object-persistence

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

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

我怀疑的两个技巧是:

  1. 让主PHP进程为这些对象分配并保留内存引用,以便它们在Web事务/请求中保持固定到内存,而无需每次都重新初始化数据库
  2. 有一种机制允许事务进程获得指向此对象的指针。
  3. 是否有任何解决方案的例子?我已经编程多年,但对Wordpress和PHP都是新手,所以也许这很简单。不确定。无论如何,我确实认识到像 redis memcached 这样的技术解决方案可能会达到类似的目标,但是不太优雅且不具有上下文的方式。也就是说,如果没有简单的方法可以做到这一点,我很乐意使用80/20规则。 :^)

1 个答案:

答案 0 :(得分:0)

在1个请求期间无法将数据存储在内存中,然后在使用纯PHP的其他请求期间从内存中读回数据。当然PHP进程使用内存,但是一旦你的请求完成,那部分内存就会被垃圾收集。这意味着第二个请求无法再次访问该内存的前一部分。

您所暗示的内容称为缓存。简而言之,缓存意味着您可以保存昂贵事务的输出以供以后重复使用,以节省该事务的成本。然后您用作存储输出的后端的内容由您或您可用的内容决定。如果你想将它保存到RAM中,那么你需要像Memcached这样的东西。您也可以将它存储在常规文件中,但由于正在访问硬盘驱动器,因此速度较慢。