it-swarm-ru.tech

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

Я продолжаю слышать о некоторых PHP (opcode) кешах, таких как - APC, XCache, Memcache, eAccelerator и т.д.

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

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

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

Заранее спасибо за помощь.

44
rahul286

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

Кэши OPCode

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

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

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

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

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

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

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

33
SirStan

На stackoverflow был опубликован хороший ответ, который хорошо отвечает на ваш вопрос.

https://stackoverflow.com/questions/28716/which-php-opcode-cacher-should-i-use-to-improve-performance

8
The Pixel Developer

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

У APC медленная разработка, и похоже, что он никогда не будет PHP 5.5 совместим. Из-за этого, похоже, что ребята из PHP будет устанавливать Zend OPCache кэш кода операции OPCache расширение как PHP расширение CORE. Подробнее читайте здесь http://wiki.php.net/rfc/optimizerplus .

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

6
Nemke

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

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

6
lo_fye

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

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

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

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

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

3
recurse

Memcache кэширует пары ключ/значение, а не коды операций. Вы можете использовать его вместе с одним из кэшей кода операции.

0
user10699