【问题标题】:Gettext caching annoyanceGettext缓存烦恼
【发布时间】:2011-12-17 09:03:35
【问题描述】:

我目前正在努力使用 PHP 中的 gettext。

Gettext 使用缓存。这是一件好事,但是当我更新我的翻译时,我无法访问它们,这很烦人。

我读到除了重新启动 Web 服务器之外,我们无法刷新缓存,这不是一个可行的解决方案。 其他人使用不同名称的 .mo 文件的副本来强制重新加载它们。

第一个问题

我正在搜索 gettext 将文件缓存在内存中多长时间,以考虑我的应用程序在字符串出现之前等待该时间是否可以接受。但是我找不到那个信息……持续时间是无限的吗?

第二个问题

我无法想象像 gettext 这样受欢迎的项目还没有解决这个问题的解决方案。它是 PHP 特有的吗?

提前感谢我将拥有的答案。 问候。

【问题讨论】:

标签: php caching gettext duration


【解决方案1】:

每个使用 gettext 的应用程序在运行时总是使用缓存,文件可能在启动/首次使用时打开,然后存储在内存中直到关闭。 PHP 作为 apache 的一部分持续运行(通过 mod_php),而不是启动和关闭。

如果你使用 php-cgi 就没有这个问题,因为 PHP 是在需要时由 apache 启动的。

Gettext 最初是为桌面应用程序开发的,而不是“系统管理员”无法控制停止和启动的长时间运行的服务器端应用程序。您不会期望桌面应用在运行时发生变化。

【讨论】:

  • 所以 1. 缓存是无限的 2. 它是 PHP 特定的,确实(嗯,不仅仅是 PHP,但我明白了)。谢谢!
【解决方案2】:

出于同样的原因,我们选择不使用 PHP 内置的 gettext,而是使用php-gettext。你会失去一些性能(我们无法衡量),但你有更好的灵活性。

【讨论】:

  • 谢谢,我们最终得到了一个基于数组的自定义解决方案,该数组可以前后转换为 .po 文件语法。
【解决方案3】:

php-gettext 与流一起工作似乎有点过时了。上次我检查时,Worrdpress 读取文件并将它们转换为数组......不是很有效。

我仍然更喜欢使用 gnu gettext ,在我的情况下,我需要通过以下方式重新启动 phpfpm:

服务 php5.6-fpm-sp 重启。

希望对其他人有用。

【讨论】:

    猜你喜欢
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2017-04-15
    • 2012-04-03
    相关资源
    最近更新 更多