Совместим ли APC с PHP 5.4 или PHP 5.5?
Не похоже, что APC был обновлен в соответствии с выпуском php 5.4 (хотелось бы, чтобы они включили APC в ядро PHP, как изначально планировалось).
Кажется, я не могу найти однозначного ответа на вопрос, работает ли текущий APC с php 5.4+. Мне удалось найти пакеты Ubuntu для php 5.4, но пакеты php-apc не будут установлены.
14 ответов
Zend OPCache включен в PHP 5.5
21 марта 2013 года была выпущена бета-версия 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 года Zeev Suraski объявил о доступности исходного кода Zend Optimizer+.
В следующей основной версии (версии после 5.5) довольно долго обсуждалась интеграция Zend Optimizer+ в ядро PHP. Люди могут захотеть заранее ознакомиться с 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
Начиная с PHP 5.4.7 и APC 3.1.13 (и даже магистрали SVC APC с 2012-09-19), хотя она "совместима", она не стабильна на серверах с большой нагрузкой, особенно если вы используете PHP-FPM и $GLOBALS. Некоторые обсуждения разработчиков на APC говорят о неразрешенных крайних случаях.
Я отвечаю на этот вопрос спустя 6 месяцев после того, как он был задан, потому что проблема все еще распространена, и столкновение с этим потоком без ответа, подобного моему, заставило меня сделать прыжок к PHP 5.4 с APC и получить ожог. Надеюсь, это поможет людям избежать боли.
Похоже, что ошибка "возможно" была исправлена в последней версии ствола. У меня это работает сейчас с PHP 5.4.0.
svn co http://svn.php.net/repository/pecl/apc/trunk/ apc-trunk
CD APC-транк
phpize
./configure
делать
сделать установку
Нет, APC 1.3.9 (и на данный момент даже ствол svn) не совместим с php 5.4.0, я знаю, потому что я потратил часы, пытаясь заставить его работать (тестировал различные svn/php. Настройки ini / флаги компилятора / вы называете это).
Это просто смешно, APC - одно из самых популярных расширений PHP, и вы ожидаете, что через несколько недель после изучения 8 PHP 5.4 RC у них будет время, чтобы заставить APC работать вместе с ним.
Жалкий.
Ну, я пробую последние несколько дней, и я никак не могу заставить кеширование кода операции работать с php 5.4. Xcache не будет компилироваться, и apc не будет распознавать определенные классы при кэшировании. Я думаю, что это ошибка, о которой говорит Саймон.
Я слышал, что в стволе были некоторые исправления, но я также попробовал последние источники ствола, но те же ошибки продолжают возвращаться. Я думаю, что php без кеширования кода операции (сейчас его нет) не заслуживает внимания. Надеюсь, что люди в APC исправят это как можно скорее.
ОБНОВИТЬ!!!
Xcache 2.0.0-rc1 отсутствует и совместим с php 5.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 и который используется вашим локальным сервером).
Если вам нужно более глубокое объяснение, дайте мне знать в комментарии ниже. С уважением.
Я нашел apcu http://windows.php.net/downloads/pecl/releases/apcu/
Может быть, это apc для x64 на Windows. Это (версия 4.0.1) работало над моим приложением.
Кажется, есть некоторые проблемы, которые еще предстоит решить. Проверьте ошибки, и вы сможете выяснить, что является решением вашей конкретной проблемы.
Я имел дело с одной такой ошибкой несколько часов назад, и оказалось, что использование APC из магистрали SVN - это путь. Надеюсь это поможет!
Я обнаружил, что вам нужно очищать кэш кода операции при каждом запросе страницы, в противном случае классы, реализующие интерфейсы, не загружаются. Это было скомпилировано из последней версии SVN, Apache 2.4.1, PHP 5.4.0.
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.
Zend OPCache включен в PHP 5.5 под именем php_opcache.dll в каталоге php / ext. Для его активации:
- Добавьте файл php_opcahe.dll как расширение zend в файл конфигурации php.ini.
- Используйте формат zend_extension = path / to / php / ext / php_opcache.dll.
- Поместите zend_extension перед xDebug zend_extension в вашей конфигурации php.ini.
- Сохраните файл конфигурации php.ini и перезапустите сервер.
Мы экспериментируем с ошибками без памяти (apache segfault) с PHP 5.4.26 и APC 3.1.9. В PHP 5.4.X есть открытая ошибка для APC: https://bugs.php.net/bug.php?id=61934
Я рекомендую не использовать этот плагин на PHP > 5.3.
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.
В версии 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.