Gettext кеширование раздражение - PullRequest
4 голосов
/ 28 октября 2011

В настоящее время я борюсь с gettext в PHP.

Gettext использует кеш.Это хорошо, но когда я обновляю свои переводы, я не могу получить к ним доступ, что раздражает.

Я прочитал, что мы не можем очистить кэш, кроме перезапуска веб-сервера, который не является жизнеспособнымрешение.Другие люди используют копии файлов .mo с другим именем, чтобы заставить их снова загружаться.

Первый вопрос

Я искал, как долго gettext кэширует файлы в памяти, чтобы определить,мое приложение может подождать, пока появятся строки.Но я не смог найти эту информацию ... Является ли продолжительность бесконечной?

Второй вопрос

Я не могу представить себе такой популярный проект, так как gettext не имеет решения, которое нужно преодолетьЭта проблема.Это специфично для PHP?

Заранее спасибо за ответчики, которые у меня будут.Привет.

Ответы [ 3 ]

5 голосов
/ 29 октября 2011

Каждое приложение, которое использует gettext, всегда использует кэш во время его работы, файл, вероятно, открывается при запуске / первом использовании, а затем сохраняется в памяти до закрытия. PHP постоянно работает как часть apache (через mod_php), а не запускается и закрывается.

Если вы используете php-cgi, у него нет этой проблемы, так как PHP запускается apache при необходимости.

Gettext изначально разрабатывался для настольных приложений, а не для долго работающих серверных приложений, которые «системный администратор» не может контролировать при остановке и запуске. Вы не ожидаете, что настольное приложение изменится во время работы.

1 голос
/ 16 ноября 2012

По той же причине мы выбрали не использовать gettext, встроенный в PHP, а php-gettext .Вы потеряете немного производительности (мы ничего не можем измерить), но у вас больше гибкости.

0 голосов
/ 07 февраля 2015

php-gettext работает с потоками, кажется немного устаревшим. Worrdpress в прошлый раз, когда я проверял, читает файлы и конвертирует их в массивы ... не очень эффективно.

Я все еще предпочитаю использовать gnu gettext, в моем случае мне нужно было перезапустить phpfpm, выполнив:

service php5.6-fpm-sp restart.

Надежда полезна кому-то еще.

...