将对象固定到内存

时间:2012-05-13 10:52:23

标签: php performance memory

我正在尝试一种简单的方法来永久地将PHP对象固定到内存中,然后让它可用于其他更临时的对象,以便在正常的服务页面请求期间发送消息。我仍然是Wordpress的新手,所以也许我让事情变得太复杂......让我通过一个例子展示我想要做的事情:

  1. 在启动时加载UOM(度量单位)对象,轮询数据库以获取单位列表,默认单位,单位类别(例如,磅是imperial度量),转换率,等
  2. 要使用UOM转换或查找的后续服务请求只需调用全局UOM对象($UOM->get_measures_for_category ('speed'))。该对象已经在内存中,无需返回数据库来处理请求。
  3. UOM上的update()方法允许基于事件或时序的触发器要求UOM对象自行更新。
  4. 这只是服务请求定期使用的一些相对静态数据集的一个示例,并且重复查询数据库将是浪费的。希望人们熟悉这种模式,并且可以指出一些如何在Wordpress / PHP环境中执行此操作的示例。

2 个答案:

答案 0 :(得分:3)

对于你想要的东西,这不是最好的方法。然而,您所谈论的内容需要了解PHP的一个基本趋势和一般的范围编程,即全局范围。

因此,如果您在全局范围内声明:

 $uom = new UOM_Class();

然后在任何文件中写下:

global $uom;
$uom->something();

它会起作用。

然而,这一切都是浪费,相反,你会更好地使用静态方法,更像是单身模式,例如:

UOM::Something();

我将它作为一项任务,让您了解单例是什么,以及范围是什么,这些是PHP的基本趋势,您不应该在不了解范围的情况下声称知道PHP。最好的方式就是在日常会话中,它被称为 context ,全球范围无异于同时在每个人耳中大喊大叫。每个人都可以访问它,而不是你想要污染的东西

我很抱歉,如果我看起来有点苛刻,这里有一些应该有用的文章,他们谈论范围,单身人士和其他一些方法,比如对象工厂

http://php.net/manual/en/language.variables.scope.php http://www.homeandlearn.co.uk/php/php8p2.html

http://php.net/manual/en/language.oop5.patterns.php

答案 1 :(得分:0)

我最初发布时没有明白我的问题,但根据与Tom的对话,我同意在Stack Overflow上更清楚地重新发布。