Кэшированный XML для PHP? - PullRequest
       17

Кэшированный XML для PHP?

0 голосов
/ 12 ноября 2009

У меня есть пользовательский PHP-фреймворк, и я открываю для себя радость хранения параметров конфигурации в виде простого для восприятия человеком простого XML.

Мне очень хочется представить XML (действительно простой XML, как этот)

<mainmenu>
 <button action="back" label="Back"/>
 <button action="new" label="New item"/>
</mainmenu>

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

name=value;name=value;name=value;

пар, массивов, наборов переменных и так далее.

Однако я боюсь за производительность фреймворка. В то время как отдельные операции XML в профилировании практически ничего не значат, они, конечно, дороже, чем простое explode () для большой строки. Мне неудобно, когда simpleXML (моя любимая библиотека) выполняет полную проверку правильности формы на дюжине фрагментов XML каждый раз, когда пользователь загружает страницу.

Я мог бы кэшировать объекты XML самостоятельно, но хотел бы: 1) избежать хлопот и 2) не усложнять структуру.

Поэтому я ищу ненавязчивое решение для XML-кэширования. Идеальная вещь - это функция, которую я могу указать путь к файлу и вернуть проанализированный объект simpleXML. Внутренне он поддерживает кэш где-нибудь с сериализованными объектами simpleXML или чем-то еще.

Кто-нибудь знает инструменты для этого?

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

Ответы [ 2 ]

1 голос
/ 12 ноября 2009

Вы можете преобразовать XML в прежний формат один раз, а затем проверить время модификации XML и текстового файла с помощью filemtime. Если XML новее, чем текстовый файл, выполните преобразование еще раз.

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

0 голосов
/ 12 ноября 2009

Привет, я использую Zend Cache для подобных вещей и должен сказать, что он очень быстро получил одну страницу примерно с 2 сек до 0,5 сек вниз.

...