0

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

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

我怀疑的两个技巧是:

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

有没有这样做的解决方案示例?我已经编程多年,但对 Wordpress 和 PHP 都很陌生,所以也许这很简单。没有把握。无论如何,我确实认识到像redismemcached这样的技术解决方案可能会实现类似的目标,但会以不那么优雅和非上下文的方式实现。也就是说,如果没有简单的方法可以做到这一点,我很乐意使用 80/20 规则。:^)

4

1 回答 1

0

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

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

于 2012-05-14T12:41:59.407 回答