Чи сумісний 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
Я вважаю, ви робите влучну установку. Ви спробували встановити pecl?
Darragh Enright

Так, це насправді спрацювало. Дякую. І як виявляється, APC прекрасно працює з 5.4, зокрема, при використанні нових функцій функцій.
Greywire

1
@Darragh [Тільки повідомляю вас] на це є здоровенний щедрот, ви можете хотіти відповісти.
Tiberiu-Ionuț Stan

1
Ні, це не так. Його останній реліз був у 2012 році, і це не сумісно з новою версією PHP
Abadis

Відповіді:


163

Zend OPCache включений у PHP 5.5

21 березня 2013 року було випущено PHP 5.5 beta 1, включаючи "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 та якийсь вільний час, рекомендується переглянути список помилок і побачити, чи можуть вони щось виправити, або покращити цей безкоштовний продукт з відкритим кодом, на який ми всі покладаємось.

Існують альтернативні рішення, Wikipedia надає список прискорювачів 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. Пам'ятайте, це все-таки бета-версія . Якщо ви використовуєте його взагалі, ви використовуєте його на свій страх і ризик.

02.01.2013 : Доступний
APC 3.1.14 , додаючи сумісність PHP 5.5, на додаток до вирішення значної кількості інших помилок .

Ще бета-версія


2012-09-03 : Доступний
APC 3.1.13 , виправляючи ряд segfault .


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 w / APC і згоріти. Сподіваємось, це допоможе людям уникнути деякого болю.


6

Здається, що помилка "можливо" була виправлена ​​в останній редакції до магістралі. У мене це працює зараз з PHP 5.4.0.

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

cd apc-trunk

phpize

./ конфігурація

зробити

зробити встановлення


apc більше не є svn.php.net/repository/pecl. Репо було перетворено на Git і тепер його можна переглядати за адресою git.php.net/?p=pecl/caching/apc.git
Дерексон

5

Ні, APC 1.3.9 (і станом на цей момент, навіть магістраль svn) не сумісний з 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. PHP 5.4 мене дуже схвилював, але без APC чи XCache чи чогось іншого, його марно. І це історія PHP роками та роками .. завжди чекаю, чекаю .. Я починаю серйозно замислюватися про те, щоб взяти якусь іншу мову .. просто не впевнений, що ..
Greywire

Правда, про помилку щодо сегментації було повідомлено ще в грудні минулого року, і через 3 місяці вона все ще не виправлена, wtf - це точка, яка випускає «основне оновлення», якщо вона навіть не працює в найбільш поширених умовах. [Помилка № 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 від startpad.net/~ondrej/+archive/php5 . Але якщо щось з’явиться, я перевірю список помилок. Дякую!
Greywire

3

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


@ michiel-thalen ви помітили місце, це питання, про яке я говорив. Це справді ганьба ... Хоча я все ще бачив невелику користь у роботі навіть із скиданням коду для кожного завантаження. Користувальний кеш все ще працює за призначенням (на моєму тестуванні поки що).
Simon Simon

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. На PHP 5.4.X відкрита помилка для APC: 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.