Могу ли я использовать APC и memcached на одном сервере? - PullRequest
7 голосов
/ 20 декабря 2009

Я использую memcache для кэширования объектов, но хотел бы добавить дополнительно ускоритель кода операции, такой как APC. Поскольку оба они включают кеширование, я не уверен, будут ли они «наступать друг другу на пальцы», то есть я не уверен, что memcache уже является ускорителем кода OP.

Может кто-нибудь уточнить? Я хотел бы использовать их обоих - немного для разных вещей. memcache для кеширования моих объектов и APC для ускорения кода

Ответы [ 2 ]

19 голосов
/ 20 декабря 2009

Memcache больше похож на распределенный объектный кеш, чем на APC или XCache, который хранит байт-код PHP в памяти, поэтому вам не придется каждый раз анализировать его. Их основные цели различны.

Например, если у вас был очень требовательный к базе данных запрос к базе данных, который часто запрашивали люди, вы можете кэшировать полученный объект в memcache и затем обращаться к нему, а не повторять этот запрос постоянно.

APC и XCache имеют аналогичные функции кэширования объектов, но вы ограничены хост-машиной. Что если вы хотите, чтобы 10 разных серверов имели доступ к этому одному объекту без необходимости повторного выполнения запроса для каждого сервера? Вы просто перенаправили бы их на свой сервер memcache и уходите. Вы по-прежнему получаете выгоду, если у вас есть только один сервер, потому что использование memcache поможет вам масштабироваться в будущем, если вам нужно разветвляться на большее количество блоков.

Главное, что нужно учитывать, если вы думаете, что ваше приложение будет нуждаться в масштабировании. У Memcache больше издержек, поскольку для доступа к нему нужно использовать TCP-соединение, а не просто вызов функции для общих объектов APC / Xcache.

Однако Memcache имеет следующие преимущества:

  • Быстрее, чем диск или повторный запрос.
  • Масштабируется на несколько серверов.
  • Работает со многими разными языками, ваши объекты не привязаны только к PHP + APC / Xcache.
  • Все процессы / языки имеют доступ к одним и тем же объектам, поэтому вам не нужно беспокоиться о том, имеют ли дочерние процессы PHP пустой кэш объектов или нет. Это может быть не так уж сложно, если вы используете PHP-FPM.

В большинстве случаев я бы рекомендовал кэшировать ваши объекты в memcache, поскольку это не намного сложнее и более гибко в будущем.

Имейте в виду, что это только в отношении объектов кэширования. Memcache NOT не имеет каких-либо функций ускорения байт-кода или PHP, поэтому я буду запускать его параллельно с APC или Xcache

4 голосов
/ 20 декабря 2009

да, вы можете использовать их вместе одновременно.

...