我正在编写一个应用程序,并且我将拥有许多不同语言的一些字典值。我知道我可以使用 GetText,但是 AFAIR 文件必须在编辑后进行编译,并且我想让用户编辑字典,并且我无法在服务器上重新编译 .mo 文件。我不知道会使用多少种语言,所以解决方案必须是有弹性的。

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

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

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

我正在考虑制作类似的东西 DictionaryValues 类,序列化一次,然后在每次请求时反序列化。每次有人编辑字典时,对象都会再次序列化并替换旧的序列化对象。当然,与读取字典值的频率相比,编辑很少发生。

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

也许您找到了更好的解决方案来解决这个问题?

有帮助吗?

解决方案

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

在分布式环境中,你可以使用执行相同功能内存缓存

其他提示

一些选项,如果内存缓存/ APC是过多或不可能的:

您可以“编译”您的数据库值经常到PHP文件,包括。这将是最快parsing-和处理,明智的。

如果您不需要在每一页每一字典值(很可能,不是吗?),你可能想使用一个缓存表,可以工作没有连接。这将是从足迹透视的最佳解决方案。

有几种选择:

  1. 您可以使用共享内存(什莫普 或者 内存缓存).
  2. 您可以缓存到文件或数据库 - 尝试 PEAR::Cache_Lite (或者 APC 正如@jldupont建议的那样)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top