2009-11-12 83 views
1

我写一个应用程序,我将有许多不同的语言字典的一些值之间PHP对象的状态。我知道我可以使用GetText,但编辑后必须编译AFAIR文件,并且我想让用户编辑字典,并且不能在服务器上重新编译.mo文件。我不知道会使用多少种语言,因此解决方案必须具有弹性。记住请求

我设计的数据库,所以它工作得很好,模式看起来不错,但对于每个字典值有几个连接,所以解决方案不是太快。

因为这个原因,我正在考虑一次存储字典值,只有在编辑一个值后才刷新它。不幸的是,PHP静态变量无法使用,因为它们在请求结束时死亡。我不想使用会话,因为我必须为每个用户进行数据库调用。理想情况下,我想像使用Java一样使用静态变量 - 只要应用程序存在于JVM中,它们就会生活。

对于所有用户(而不是每个用户)长时间(而不是每个请求)存储一些变量(在我的例子 - 字典,字典条目等)的最佳解决方案是什么?

我正在考虑制作类似DictionaryValues的类,将其序列化一次,然后对每个请求进行反序列化。每次有人编辑字典时,对象都会被重新序列化,并将替换旧的序列化对象。当然,与字典值读取的频率相比,编辑很少出现。

这是一个很好的解决方案吗?我应该序列化对象并将其存储在磁盘上还是写入数据库?哪一个更快?

也许你找到更好的解决方案,解决这个问题?

回答

5

您可以尝试PHP APC。这是快速和易于使用。您可以序列化/反序列化对象并轻松存储/获取它们。

在分布式环境中,您可以使用memcache执行相同的功能。

2

有几个选项,如果内存缓存/ APC过多或不可能的:

你可以“编译“你的数据库值经常进入一个PHP文件并包含它。这将是最快的解析和处理方式。

如果您不需要每个页面中的每个字典值(很可能,是不是?),您可能想要使用无JOIN的缓存表。从脚印的角度来看,这将是最好的解决方案。