Использование локального кэша вместе с Doctrine ORM

0

Я работал с Silex и Doctrine ORM. Чтобы быстрее выполнять запросы к базе данных, я хотел бы иметь какое-то кеширование.

Я посмотрел на PhpFastCache - который обеспечивает хорошую структуру кэширования - но на самом деле не интегрируется с Doctrine. Наилучшая часть этого заключается в том, что я могу иметь локальный кеш независимо от любой внешней службы, такой как memcached. Поскольку у меня есть небольшой сайт, размещенный на общем хосте, я не могу тратить деньги на обслуживание в облаке.

Я также посмотрел на существующих поставщиков кэшей для Doctrine ORM, и все они используют внешний сервис кеша.

Последнее, что я знаю, что мне нужно будет сделать, это написать провайдер, который сам использует PhpFastCache, но просто хотел убедиться, что нет альтернативы онлайн, которую я могу использовать. Я изо всех сил старался найти в Интернете весь день сегодня, но я просто хотел убедиться.

Просто добавлю: я просмотрел APC и Memcache, но у меня есть мой сайт на совместном хостинге, и мне понадобится выделенный хостинг для установки модулей PECL для APC/Memcache :(.

Теги:
doctrine2
silex

2 ответа

1
Лучший ответ

Я быстро написал провайдера для PhpFastCache. Я добавил суть:

https://gist.github.com/thephoenics/ee7de9f95bfdf5f6c24f

3

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

Если бы я должен был догадаться, я бы сказал, что FilesystemCache - это то, что вы хотите. Он хранит сериализованные данные в обычном файле. PhpFileCache хранит его как файл PHP, а затем использует include чтобы прочитать его позже. Это означает, что он должен анализироваться PHP при чтении, что, вероятно, медленнее, если вы не используете кеш-байт PHP, такой как APC.

Ни одно решение не будет столь быстрым, как что-то вроде Memcache, поскольку они оба читают из файловой системы вместо памяти, но они должны обеспечивать оптимизацию для медленных запросов к базе данных, которые часто выполняются.

Изменить: Как отметил Киран Мэдипалли, вам будет легко создать собственный драйвер PhpFastCache, расширив CacheProvider.

  • 0
    Спасибо, похоже, хороший вариант для начала. Я также думаю, что могу расширить Cache Provider таким же образом, каким был создан поставщик FileSystemCache - используя PhpFastCache. Потратим некоторое время на это, и если я смогу сделать это легко - у меня будет провайдер кэша с PhpFastCache :).
  • 0
    PhpFileCache, скорее всего, будет курить memcached и apc по производительности, ЕСЛИ вы включите opcache. Это невоспетый кеш. В основном подходит для вещей, которые не сильно меняются, так как они не очень динамичны.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню