Gettext缓存烦恼

时间:2011-10-28 15:00:13

标签: php caching gettext duration

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

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

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

第一个问题

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

第二个问题

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

预先感谢我将拥有的冬天。 问候。

3 个答案:

答案 0 :(得分:5)

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

如果您使用php-cgi,则不会出现此问题,因为PHP在需要时由apache启动。

Gettext最初是为桌面应用程序开发的,没有长时间运行的服务器端应用程序,“sysadmin”无法控制停止和启动。您不希望桌面应用在运行时发生变化。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

我仍然喜欢使用gnu gettext,在我的情况下我需要通过执行以下操作重启phpfpm:

服务php5.6-fpm-sp restart。

希望对其他人有用。