Web

Какой кэш PHP (код операции) следует использовать и почему?

Я постоянно слышу о некоторых PHP (opcode) кэшах, таких как APC, XCache, Memcache, eAccelerator и т. д.

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

Например, почему вы скажете, что система кэширования X лучше, чем Y? Меня меньше беспокоит относительный прирост производительности. Небольшие различия между любыми двумя системами имеют меньшее значение.

Если общий ответ на мой вопрос невозможен, вот несколько советов. Я использую выделенный VPS с Mediatemple (с root-доступом). Оперативная память составляет 512 МБ (физическая) + 400 МБ (своп). Меня волнует WordPress и его производные WordPress-MU и BuddyPress. 90% наших кодов/сайтов относятся к семейству WordPress. Заранее спасибо за помощь.

Ответ 1

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

Кэши OPCode

Существует множество ускорителей PHP (OPCaches). Как обычно бывает с продуктами с открытым исходным кодом, все они довольно похожи. XCache это самый легкий PHP-ускоритель, и он является выбором по умолчанию, когда вы используете HTTPd. Он также хорошо работает с Apache, однако APC кажется немного более лучшим с социальной точки зрения, поскольку официально поддерживается как часть PHP и выпускается вместе с официальным дистрибутивом PHP.

Я отказался от использования eAccelerator из-за его медленного развития и отставания от релизов PHP, а APC предлагает официальный надежный статус при аналогичной производительности.

Эти продукты, как правило, устанавливаются сразу; без изменения кода мгновенный прирост производительности. При использовании больших кодовых баз (Drupal, Wordpress) производительность может быть в 3 раза выше при снижении времени отклика и использования памяти.

Кэширование данных

Memcache это немного другой продукт, его можно представить как легкую систему хранения ключевых значений, которую можно масштабировать на несколько серверов. Программное обеспечение должно быть усовершенствовано для поддержки Memcache, и оно решает некоторые проблемы лучше, чем другие. Если бы у вас на сайте был список стоимости акций в реальном времени, вы могли бы использовать Memcache для хранения резидентного списка текущих значений, которые отображаются на вашем сайте. Вы могли бы использовать его для хранения данных сессии для краткосрочного повторного использования. Вы не будете использовать его для других целей, таких как кэширование всей страницы или замена MySQL.

Существуют также аддоны Wordpress, такие как WP-Super-Cache, которые могут значительно улучшить производительность Wordpress (на самом деле, WP-Super-Cache может конкурировать со статическими HTML сайтами во многих случаях).

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

Ответ 2

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

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

Ответ 3

Хочу заметить, что ситуация немного изменилась, и похоже, что APC не будет включен в ядро PHP 6.

APC развивается медленно, и похоже, что он никогда не будет совместим с PHP 5.5. В связи с этим кажется, что ребята из PHP будут устанавливать расширение кэша опкодов Zend OPCache в качестве расширения PHP CORE. Подробнее вы можете прочитать здесь:

http://wiki.php.net/rfc/optimizerplus.

Важное замечание: Zend OPCache не имеет пользовательского кэша данных, как APC, поэтому, если вам нужен пользовательский кэш данных, вы можете использовать его вместе с Memcache.

Ответ 4

Если вы используете PHP версии не ниже 5.50, OpCache ваш лучший выбор (встроенная библиотека PHP/PECL). Она должна быть предварительно скомпилирована при установке из бинарного файла.

http://php.net/manual/en/book.opcache.php

Если вы используете PHP версии до 5.5, APC (PHP/PECL нативный кэш OpCode) будет самым простым выбором, хотя он считается необслуживаемым:

http://php.net/manual/en/book.apc.php

Использование встроенной функциональности OpCache в PHP должно избавить вас от необходимости поддерживать сторонние библиотеки.

Схожие статьи

Web

Что такое ISA Server. ISA Server простыми словами. Настройка ISA

Web

Как я могу обезопасить вводимые пользователем данные с помощью PHP?

Web

Как использовать XMLReader в PHP

Web

Как определить, переменные PHP передаются по значению или по ссылке?