В чем разница между APC, APCu и Opcache?

Я использую веб-сервер со следующими пакетами; php-apc 3.1.7-1 php5-fpm 5.3.10-1ubuntu3.10

Однако я построил новый сервер на Ubuntu 14.04, и похоже, что php-apc больше не доступен.

Таким образом, APC был спасательным кругом для моего огромного трафика (100 тыс. Уникальных посещений в день).

Я немного запутался в механизмах кеширования в PHP. Новый сервер включает следующие пакеты: php-apc 4.0.2-2build1 php5-apcu 4.0.2-2build1 php5-fpm 5.5.9 + dfsg-1ubuntu4.7

phpinfo () дает мне "apc" в эмулированном виде. Насколько я понимаю, APC заменен на APCu.

https://github.com/cepa/kickasscache Я использую этот бесплатный класс для кеширования, это действительно экономит много процессора/памяти в моем случае. Но я не могу понять, будет ли то же самое с APCu?

Если это не так, как я могу настроить правильное кэширование? Потому что у моего нового сервера ограниченные ресурсы, и мне нужно решение.

php -v возвращает

PHP 5.5.9-1ubuntu4.7 (cli) (built: Mar 16 2015 20:47:39)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

Означает ли это, что OPcache включен по умолчанию?


person martyr    schedule 21.03.2015    source источник
comment
APCu - это компонент пользовательских данных старого APC без кэширования байт-кода, потому что OpCache теперь является стандартным кэшированием байт-кода для PHP, но не обеспечивает кэширование пользовательских данных.   -  person Mark Baker    schedule 21.03.2015
comment
@MarkBaker Спасибо за информацию. Есть ли способ вернуться к старой функциональности APC? Я думаю о понижении моей ОС, php и других пакетов.   -  person martyr    schedule 21.03.2015
comment
Если вы понизите версию PHP ниже 5.5, вы потеряете OpCache и снова сможете использовать APC в качестве кеша байт-кода.   -  person Mark Baker    schedule 22.03.2015
comment
Обратите внимание, что PHP 5.4 больше не поддерживается активно, только выпуски безопасности, и они прекратятся после 14 сентября.   -  person Mark Baker    schedule 22.03.2015
comment
@MarkBaker спасибо за отличную информацию. Я думаю, что нашел проблему. Вся история была связана с пакетом php-apcu ... Я установил его с помощью apt-get, а затем обновил с помощью обновления pecl. Однако, если я обновлюсь до 4.0.7, это убьет мою память. я в порядке с 4.0.2 сейчас. и у меня возникла ошибка сегментации при обновлении pecl, но я проигнорировал ее. итоги: не обновляйте php-apcu до PECL. используйте стоковую версию 4.0.2 с apt :)   -  person martyr    schedule 22.03.2015
comment
@MarkBaker, почему бы тебе не написать здесь свой комментарий как правильный ответ? это, кажется, прикрывает это. :)   -  person anarcat    schedule 04.06.2015


Ответы (1)


Нет необходимости в APC (или каких-либо подобных расширениях для кэширования байт-кода, таких как XCache), начиная с PHP 5.5. Разработчики PHP напрямую интегрировали то, что они называют OPCache, в ядро ​​продукта. Это не только обеспечивает большую общую стабильность продукта, но и официально поддерживается разработчиками PHP.

Если вам нужна конкретная функция APC, которой нет в OPCache (например, функциональность APCu), вам следует начать обсуждение в списке рассылки php-dev.

Наконец, хорошее практическое правило - запускать только те версии PHP, которые указаны на домашней странице php.net. В то время как дистрибутивы обычно поддерживают исправления безопасности, более новые версии PHP имеют более полезные функции. Более новые версии PHP также обычно имеют значительные преимущества в производительности, которые могут позволить вам обойти необходимость дополнительных расширений PECL, таких как APCu.

person maddog    schedule 05.05.2016
comment
Могу я попросить источник, пожалуйста? php.net/manual/en/book.opcache.php говорит, что он связан с PHP 5.5+, но содержимое /etc/php5/cli/php.ini и /etc/php5/apache2/php.ini в моей новой установке PHP 5.6+ говорит, что он отключен по умолчанию (;opcache.enable=0). - person Romain Pellerin; 23.07.2016
comment
эта точка с запятой в начале этой записи указывает на то, что рассматриваемая строка закомментирована, поэтому IMHO, opcache включен в вашей установке PHP. Если бы точки с запятой не было, она действительно была бы отключена, так что все в порядке. - person Dave Morton; 26.07.2016
comment
Вы можете установить php-apcu-bc, если используете возможности APC по хранению данных, он устанавливает функции совместимости с помощью APCu. - person Ariel; 23.08.2016
comment
@DaveMorton способ debian - закомментировать значение по умолчанию, поэтому в этом случае значение по умолчанию равно 0, а opcache отключен по умолчанию - person DooMMasteR; 03.03.2021