Совместим ли APC с PHP 5.4 или PHP 5.5?


103

Не похоже, что APC был обновлен, чтобы соответствовать выпуску php 5.4 (я бы хотел, чтобы APC включили в ядро ​​PHP, как планировалось изначально).

Я не могу найти однозначного ответа на вопрос, работает ли текущий APC с php 5.4+. Мне удалось найти пакеты Ubuntu для php 5.4, но пакеты php-apc не устанавливаются.


2
Я так понимаю, вы делаете установку apt-get. Вы пробовали установить pecl?
Дарра Энрайт

Да, это действительно сработало. Спасибо. И, как оказалось, APC отлично работает с 5.4, в частности, при использовании новых функций трейтов.
Greywire 08

1
@ Дарра [Просто сообщаю] за это огромная награда, возможно, ты хочешь ответить.
Tiberiu-Ionu Stan

1
Нет это не так. Его последний выпуск был в 2012 году, и он явно несовместим с новой версией PHP
Абадис

Ответы:


163

Zend OPCache включен в PHP 5.5

21 марта 2013 г. была выпущена бета-версия 1 PHP 5.5, включающая «Zend OPCache». Похоже, что она будет заменой APC в будущем, поскольку она включена в ядро ​​PHP, и ее придется поддерживать для каждой новой версии. релиз.

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

Я не знаю, что это значит для будущего APC.

APC ДЛЯ PHP 5.4+ ПО-прежнему помечен как бета-версия

Это означает, что разработчики не считают его полностью стабильным . Хотя многие люди вообще не испытывают проблем с текущими выпусками SVN, все еще есть странные сообщения о крайних случаях от людей в определенных конфигурациях или при большой нагрузке.

Как и все, что вы хотели бы использовать в производственной среде, убедитесь, что вы сначала тщательно протестируете любой выпуск (бета-версия или стабильная версия ) в среде разработки или опытной среды . Это включает нагрузочное тестирование!

Начиная с версии 3.1.13, коммиты в репозиторий SVN несколько замедлились, и в списке ошибок не так много недавних дополнений. Сделайте из этого что хочешь.

10 декабря 2012 г. в 21:05 Расмус Лердорф написал:

APC подошел к моменту выхода версии 5.4, и я не думаю, что в ней больше крайних случаев, чем в версии 5.3. Ни то, ни другое не идеально, но для большинства сайтов достаточно близко.

Всем, у кого есть навыки C / gdb и немного свободного времени, настоятельно рекомендуется затушевать список ошибок и посмотреть, могут ли они что-нибудь исправить или улучшить этот бесплатный продукт с открытым исходным кодом, на который мы все полагаемся.

Существуют альтернативные решения, Википедия предоставляет список ускорителей PHP .

13 февраля 2013 года Зеев Сураски объявил о доступности исходного кода Zend Optimizer + .

Было довольно продолжительное обсуждение интеграции Zend Optimizer + в ядро ​​PHP в следующей основной версии (версии после 5.5). Люди могут пожелать заранее ознакомиться с Zend Optimizer +, если это так.


Не используйте APC 3.1.14.

APC 3.1.14 был удален из загрузок PECL из-за некоторых серьезных проблем с памятью, которые были обнаружены, но еще не обнаружены.

Если вы уже используете 3.1.14, возможно, вы захотите перейти на более раннюю версию, пока не будет выпущена версия 3.1.15. Помните, это все еще бета . Если вы вообще его используете, вы используете его на свой страх и риск.

2013-01-02 : Доступен
APC 3.1.14 , добавляющий совместимость с PHP 5.5, в дополнение к исправлению множества других ошибок .

Еще бета


2012-09-03 : Доступен
APC 3.1.13 , исправляющий ряд ошибок .


2012-08-16 : APC 3.1.12 тег был создан, но по - прежнему отмечен как бета , его можно найти на странице APC PECL , а также список изменений .

На этот раз исправлено множество ошибок, связанных с bin_dump.


2012-07-19 : APC 3.1.11 тег был создан, но по - прежнему отмечен как бета , его можно найти на странице APC PECL , а также список изменений . Я слежу за соответствующими списками рассылки, и они все еще активно работают над исправлением ошибок APC, однако это сложный модуль, и не многие люди, похоже, справляются с этой задачей. В этом выпуске исправлены неприятные ошибки stat = 0 при включении файлов.


2012-04-11 : APC 3.1.10 тег был создан сегодня, и бета - релиз 3.1.10 был размещен на странице APC PECL

В журнала изменений состояний:

  • Добавлена ​​поддержка PHP 5.4 (Дмитрий, Анатолий, Пьер)
  • Исправлена ​​ошибка № 22679: Исправлен apc_bin_dump для констант. Используйте IS_CONSTANT_TYPE_MASK для обработки всех констант, включая неквалифицированные (вместо проверки ~ IS_CONSTANT_INDEX)
  • Исправлена ​​ошибка # 23822, вылетает php при перезапуске apache.

1
просто введите: «pecl install apc-3.1.10», а затем мне пришлось перекомпилировать php, чтобы он обновил libphp5.so
targnation

Использовал его с октября 2012 года через Apt-get на ubuntu 12. Чисто и стабильно!
JustinP

взгляните на эту статью, связанную с Zend OpCache и APC blogs.oracle.com/opal/entry/using_php_5_5_s и эту ветку bugs.php.net/bug.php?id=64625
riotera

10

Начиная с PHP 5.4.7 и APC 3.1.13 (и даже ствола APC SVN с 2012-09-19), хотя он «совместим», он нестабилен на серверах с большой нагрузкой, особенно если вы используете PHP- FPM и $ GLOBALS. Некоторые из обсуждений разработчиков APC говорят о нерешенных дополнительных делах .

Я отвечаю на этот вопрос через 6 месяцев после того, как его задали, потому что проблема все еще распространена, и столкновение с этой веткой без ответа, подобного моему, заставило меня перейти на PHP 5.4 с APC и сгореть. Надеюсь, это поможет людям избежать боли.


6

Похоже, что ошибка "могла" быть исправлена ​​в последней версии ствола. Теперь он работает с PHP 5.4.0.

svn co http://svn.php.net/repository/pecl/apc/trunk/ apc-trunk

cd apc-trunk

phpize

./configure

делать

сделать установку


apc больше нет в svn.php.net/repository/pecl. Репо был преобразован в Git, и теперь его можно просмотреть на git.php.net/?p=pecl/caching/apc.git
Дерексон,

5

Нет, APC 1.3.9 (и на данный момент даже svn trunk) несовместим с php 5.4.0, я знаю, потому что я только что потратил часы, пытаясь заставить его работать (проверял различные svn / php. ini настройки / флаги компилятора / вы называете это).

Это просто смешно, APC - одно из самых популярных расширений PHP, и можно ожидать, что после нескольких недель изучения 8 PHP 5.4 RC у них будет время, чтобы APC работал вместе с ним.

Жалкий.


Может быть, поэтому APC не был включен в PHP 5.4, как планировалось изначально. Казалось, что он работает, когда я его тестировал, но я тестировал только черты, а не какие-либо другие функции php 5.4.
Greywire

2
Похоже, что единственный жизнеспособный компилятор кеша / байт-кода для php 5.4 - это собственный пакет сервера Zend zend. PHP 5.4 меня немного взволновал, но без APC, XCache или чего-то еще, это бесполезно. И это история PHP в течение многих лет ... всегда ждал, ждал ... Я начинаю серьезно думать о том, чтобы заняться каким-нибудь другим языком ... просто не уверен, что ...
Greywire

Правда, об ошибке segfault было сообщено еще в декабре прошлого года, а спустя 3 месяца она все еще не исправлена, wtf - это точка, выпускающая «серьезное обновление», если оно даже не работает в самых распространенных условиях. [Bug # 60462 Когда APC включен Segfault - Представлено: 2011-12-07] bugs.php.net/bug.php?id=60462&edit=1
JohnSmith

5

Ну, я пытаюсь последние несколько дней, и я никак не могу заставить кешер кодов операций работать с php 5.4. Xcache не компилируется, и apc не распознает определенные классы при кэшировании. Я думаю, это та ошибка, о которой говорит Саймон.

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

ОБНОВИТЬ!!!

Xcache 2.0.0-rc1 отсутствует и совместим с php 5.4. Наслаждайтесь!



4

Я использую AMPPS с PHP версии 5.5.19. С некоторого времени, как раз с момента выпуска PHP 5.5 - APC заменен Zend OPCache, который включен в PHP 5.5 и выше. Теперь все, что вам нужно сделать, чтобы включить «APC» (в настоящее время «OPcache»), - это отредактировать свой php.ini. Перед разделом [XDebug] добавьте плавные линии:

php.ini

...

[OPcache]

zend_extension=php_opcache.dll

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=24
opcache.max_accelerated_files=4000
opcache.revalidate_freq=3
opcache.fast_shutdown=1

...

Обратите внимание, что нам нужно иметь два экземпляра :

zend_extension =

Один в [OPcache] и один в разделе [XDebug]. Xdebug часто не предоставляется по умолчанию в установке сервера xampp / ampps / easyPHP. Вы можете оказаться в ситуации, когда вам нужно будет скачать расширение Xdebug. Вы можете легко сделать это, используя онлайн-приложение, которое определяет правильный Xdebug для вашего php. Посетите http://xdebug.org/wizard.php и следуйте их простым инструкциям. После того, как вы загрузили нужную версию Xdebug для своей версии php, отредактируйте ссылку на zend_extension в разделе [XDebug].

...

[XDebug]
zend_extension = "C:\Program Files (x86)\Ampps\php\ext\php_xdebug-2.2.6-5.5-vc11.dll"
......

Пожалуйста, обратите внимание! что вам нужно добавить раздел OPcache перед XDebug в свой файл php.ini !!! Если вы правильно меня понимаете, у вас должно быть два экземпляра zend_extension в вашем файле php.ini (один в OPcache и один в разделе Xdebug).

Это отлично работает для Symfony2 фреймворка и устраняет рекомендательные сообщения для установки и включения APC для вашего PHP и Xdebug.

Сообщение для тех, кто запустил symfony 2 и удалил предупреждающее сообщение из "web / config.php", но все же столкнулся с проблемой, запустив из командной строки "php app / check.php". Если это произойдет, это означает, что ваша консоль использует другой файл php.ini. Измените системную переменную PATH - сделайте так, чтобы она указывала на правильный каталог php (где у вас есть файл php.exe и который используется вашим локальным сервером).

Если вам нужно более подробное объяснение, дайте мне знать в комментарии ниже. С уважением.


1
Я настоятельно рекомендую объединить инструкции этого ответа с верхним ответом, чтобы каждый, кто хочет реализовать OpCache, точно знал, как это сделать.
Джо

Если вы закомментируете xdebug "zend_extension", вы отключите его - в этом нет необходимости. Добавление раздела [OPcache] с «zend_extension» не конфликтует с тем же параметром из раздела [XDebug]. Также порядок этих разделов не имеет значения.
Марек

Примечание: [источник: php.net/manual/en/opcache.installation.php] Если вы хотите использовать OPcache с »Xdebug, вы должны загрузить OPcache до Xdebug.
DevWL

3

Кажется, есть некоторые проблемы, которые еще предстоит решить. Ознакомьтесь с ошибками, и вы, возможно, сможете выяснить, как решить вашу конкретную проблему.

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


Ну пока вроде работает нормально. Это на Ubuntu 10.04 (устройство LAMP под ключ) с пакетами PHP 5.4 с launchpad.net/~ondrej/+archive/php5 . Но если что-то всплывет, проверю список ошибок. Спасибо!
Greywire 08

3

Я обнаружил, что вам нужно очищать кеш кода операции при каждом запросе страницы, иначе классы, реализующие интерфейсы, не загрузятся. Это было скомпилировано из последней версии svn trunk, Apache 2.4.1, PHP 5.4.0.


@ michiel-thalen, вы попали в точку, вот о чем я говорил. Очень жаль ... Хотя я все еще видел небольшое улучшение производительности даже при сбросе кода операции при каждой загрузке. Пользовательский кеш по-прежнему работает так, как задумано (пока что я тестировал).
Саймон

2

APC - не рекомендуется
Лично я не использовал APC с PHP 5.4 или PHP 5.5, но последняя стабильная версия APC несовместима с PHP 5.4, последняя бета-версия APC может использоваться с 5.4, но написано, что с APC все еще есть отрицательные проблемы.

Если у вас PHP 5.5,
просто используйте Zend Opcache . Он находится прямо из коробки, поэтому проблем минимально.

Если у вас PHP 5.4,
я рекомендую XCache . Он полностью совместим с PHP 5.4 и 5.5. Активно развивается. Последняя стабильная версия была выпущена 3,5 месяца назад (10 октября 2013 г.). Это улучшает производительность, даже если вы используете fastcgi.


1

Zend OPCache включен в PHP 5.5 под именем php_opcache.dll в каталоге php / ext. Чтобы активировать его:

  • Добавьте файл php_opcahe.dll в качестве расширения zend в файл конфигурации php.ini .
  • Используйте формат zend_extension = путь / к / php / ext / php_opcache.dll .
  • Поместите zend_extension перед xDebug zend_extension в конфигурацию php.ini .
  • Сохраните файл конфигурации php.ini и перезапустите сервер.

0

APC имеет новую версию: 3.1.14 со 2 января, в которой исправлены некоторые ошибки: http://pecl.php.net/package/APC

Однако до сих пор я без проблем запускал PHP 5.4.x с APC 3.1.13 из репозитория dotdeb, поэтому я бы сказал, что он стабильный. dotdeb также сообщил мне, что они будут включать обновленный APC в следующую версию PHP, которая, как ожидается, будет 5.4.11.


Если вы используете APC 3.1.14, я советую вам временно вернуться к APC 3.1.13. Были обнаружены некоторые серьезные ошибки, связанные с памятью, из-за которых выпуск 3.1.14 был извлечен из раздела загрузок.
Ли,

Действительно, я обнаружил, что пакет, выпущенный dotdeb для PHP 5.4.11, изначально включал APC 3.1.14, но он был возвращен, чтобы избежать ошибок.
Стивен Де Гроот

0

Мы экспериментируем с ошибками отсутствия памяти (apache segfault) с PHP 5.4.26 и APC 3.1.9. Есть открытая ошибка для APC на PHP 5.4.X: https://bugs.php.net/bug.php?id=61934

Я рекомендую не использовать этот плагин на PHP> 5.3.


0

В XAMPP версии 5.6.3 (PHP 5.6.3) все, что вам нужно сделать в ini.php, это:

[OPcache]

zend_extension = php_opcache.dll
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=24
opcache.max_accelerated_files=4000
opcache.revalidate_freq=3
opcache.fast_shutdown=1

[XDebug]

zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.max_nesting_level = 200
xdebug.profiler_append = 1
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
;xdebug.profiler_output_dir = "C:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
;xdebug.remote_enable = 0
;xdebug.remote_handler = "dbgp"
;xdebug.remote_host = "127.0.0.1"
;xdebug.trace_output_dir = "C:\xampp\tmp"

Конфигурация для фреймворка symfony2.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.