APC est-il compatible avec PHP 5.4 ou PHP 5.5?

103

Il ne semble pas qu'APC ait été mis à jour pour coïncider avec la version php 5.4 (j'aurais aimé qu'ils aient inclus APC dans le noyau PHP comme prévu à l'origine).

Je n'arrive pas à trouver de réponse définitive à savoir si APC actuel fonctionne avec php 5.4+. J'ai réussi à trouver des packages Ubuntu pour php 5.4, mais les packages php-apc ne s'installent pas.

Greywire
la source
2
Je suppose que vous faites une installation apt-get. Avez-vous essayé une installation pecl?
Darragh Enright
Oui, cela a fonctionné. Je vous remercie. Et il s'avère qu'APC fonctionne très bien avec 5.4, en particulier, lors de l'utilisation de la nouvelle fonctionnalité de traits.
Greywire
1
@Darragh [Juste pour vous dire] il y a une grosse prime là-dessus, vous voudrez peut-être faire une réponse.
Tiberiu-Ionuț Stan
1
Non, ce n'est pas le cas. Sa dernière version date de 2012 et n'est certainement pas compatible avec la nouvelle version de PHP
Abadis

Réponses:

163

Zend OPCache inclus dans PHP 5.5

Le 21 mars 2013, PHP 5.5 beta 1 a été publié avec "Zend OPCache" - Il semble fermement que ce sera le remplacement d'APC à l'avenir car il est inclus dans le noyau PHP, et devra être maintenu pour chaque nouveau Libération.

Je conseillerais personnellement à ceux qui dépendent d'APC pour sa mise en cache d'opcode de tester leur code avec le prochain cache d'opcode intégré, et de signaler tout problème rencontré pour assurer une version finale stable.

Je ne sais pas ce que cela signifie pour l'avenir d'APC.

APC POUR PHP 5.4+ EST TOUJOURS MARQUÉ BÊTA

Cela signifie que les développeurs ne le considèrent pas comme complètement stable . Bien que de nombreuses personnes ne rencontrent aucun problème avec les versions actuelles de SVN, il existe toujours un rapport étrange de cas extrêmes de la part de personnes sous certaines configurations ou sous une charge importante.

Comme avec tout ce que vous voulez utiliser dans un environnement de production, assurez-vous de tester soigneusement toute version (bêta ou stable) dans le développement ou la pré-production des environnements d' abord . Cela inclut les tests de charge!

Depuis la version 3.1.13, les validations vers le référentiel SVN ont quelque peu ralenti et la liste de bogues n'a pas beaucoup d'ajouts récents. Fais-en ce que tu veux.

Le 10 décembre 2012 à 21h05, Rasmus Lerdorf a écrit:

APC est maintenant au point pour 5.4 où je ne pense pas qu'il y ait plus de cas extrêmes que nous en avons dans 5.3. Ni l'un ni l'autre n'est parfait, mais il est assez proche pour la majorité des sites.

Toute personne ayant des compétences C / gdb et un peu de temps libre est instamment priée de passer outre la liste des bogues et de voir si elle peut résoudre quoi que ce soit, ou améliorer ce produit open source gratuit sur lequel nous comptons tous.

Des solutions alternatives existent, Wikipédia fournit une liste d'accélérateurs PHP .

Le 13 février 2013, Zeev Suraski a annoncé la disponibilité du code source de Zend Optimizer + .

Il y a eu une discussion assez longue sur l'intégration de Zend Optimizer + dans le cœur de PHP dans la prochaine version majeure (la version après 5.5). Les gens peuvent souhaiter se familiariser avec Zend Optimizer + à l'avance, si tel est le cas.


N'utilisez pas APC 3.1.14

APC 3.1.14 a été supprimé des téléchargements PECL en raison de graves problèmes de mémoire qui ont été découverts mais qui n'ont pas encore été retrouvés.

Si vous utilisez déjà la version 3.1.14, vous souhaiterez peut-être rétrograder jusqu'à la sortie de la version 3.1.15. N'oubliez pas que c'est toujours une version bêta . Si vous l'utilisez du tout, vous l'utilisez à vos propres risques.

2013-01-02 :
APC 3.1.14 est disponible , ajoutant la compatibilité PHP 5.5, en plus de résoudre un bon nombre d'autres bogues .

Encore bêta


03/09/2012 :
APC 3.1.13 est disponible, corrigeant un certain nombre de défauts de segmentation .


16/08/2012 :
Une balise APC 3.1.12 a été créée, mais elle est toujours marquée comme bêta , elle est disponible sur la page APC PECL , ainsi que dans le journal des modifications .

Beaucoup de bogues liés à bin_dump corrigés cette fois-ci.


19/07/2012 :
Une balise APC 3.1.11 a été créée, mais elle est toujours marquée comme bêta , elle est disponible sur la page APC PECL , ainsi que dans le journal des modifications . J'ai suivi les listes de diffusion pertinentes et ils travaillent toujours activement à la correction des bogues APC, mais c'est un module complexe et peu de gens semblent être à la hauteur de la tâche. Cette version corrige les bugs stat = 0 désagréables lors de l'inclusion de fichiers.


11/04/2012 :
Une balise APC 3.1.10 a été créée aujourd'hui et une version bêta de la version 3.1.10 a été placée sur la page APC PECL.

Le journal des modifications indique:

  • Ajout du support PHP 5.4 (Dmitry, Anatoliy, Pierre)
  • Correction du bug # 22679: Correction de apc_bin_dump pour les constantes. Utilisez IS_CONSTANT_TYPE_MASK pour gérer toutes les constantes, y compris celles non qualifiées (au lieu de ~ IS_CONSTANT_INDEX check)
  • Correction du bug n ° 23822, php plante au redémarrage d'Apache
Leigh
la source
1
tapez simplement: "pecl install apc-3.1.10" puis j'ai dû recompiler php pour qu'il mette à jour libphp5.so
targnation
Je l'ai utilisé depuis octobre 2012 via Apt-get sur ubuntu 12. Propre et stable!
JustinP
jetez un œil à cet article lié à Zend OpCache et APC blogs.oracle.com/opal/entry/using_php_5_5_s et ce fil de discussion bugs.php.net/bug.php?id=64625
riotera
10

Depuis PHP 5.4.7 et APC 3.1.13 (et même le tronc APC SVN à partir du 19/09/2012), bien qu'il soit "compatible", il n'est pas stable sur les serveurs à forte charge, en particulier si vous utilisez PHP- FPM et $ GLOBALS. Certaines des discussions des développeurs sur APC parlent de cas marginaux non résolus .

Je réponds à cette question 6 mois après qu'elle a été posée car le problème est toujours répandu, et rencontrer ce fil sans une réponse comme la mienne est ce qui m'a fait faire le saut vers PHP 5.4 avec APC et me brûler. Espérons que cela aidera les gens à éviter certaines douleurs.

Eric Caron
la source
6

Il semble que le bogue «peut» avoir été corrigé dans la dernière révision du coffre. Je le fais maintenant fonctionner avec PHP 5.4.0.

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

cd apc-trunk

phpize

./configure

faire

faire installer

Simon
la source
apc n'est plus dans svn.php.net/repository/pecl. Repo a été converti en Git et peut maintenant être consulté
Dereckson
5

Non, APC 1.3.9 (et à partir de ce moment, même le tronc svn) n'est pas compatible avec php 5.4.0, je le sais parce que je viens de passer des heures à essayer de le faire fonctionner (testé divers svn / php. paramètres ini / drapeaux du compilateur / nommez-le).

C'est juste ridicule, APC est l'une des extensions PHP les plus populaires et vous vous attendez à ce qu'après des semaines passées à passer par 8 PHP 5.4 RC, ils aient le temps de faire travailler APC à ses côtés.

Pathétique.

John Smith
la source
C'est peut-être pour cette raison qu'APC n'a pas été inclus avec PHP 5.4 comme prévu à l'origine. Cela semblait fonctionner lorsque je l'ai testé, mais je n'ai testé que des traits et aucune des autres fonctionnalités de php 5.4.
Greywire
2
Il semble que le seul compilateur de cache / bytecode viable pour php 5.4 soit le propre paquet serveur zend de Zend. PHP 5.4 m'a un peu excité, mais sans APC ou XCache ou quelque chose comme ça, c'est inutile. Et cela a été l'histoire de PHP pendant des années et des années .. toujours en attente, en attente .. Je commence à penser sérieusement à prendre un autre langage .. mais je ne sais pas quoi ..
Greywire
Certes, le bogue de segfault a été signalé en décembre l'année dernière, et 3 mois plus tard, il n'est toujours pas corrigé, wtf est le point de publier une `` mise à niveau majeure '' si cela ne fonctionne même pas dans les conditions les plus courantes. [Bogue n ° 60462 lorsque APC est activé par défaut de segmentation - Soumis: 07/12/2011
JohnSmith
5

Eh bien, j'essaye depuis quelques jours, et je ne peux pas faire fonctionner un opcode cacher avec php 5.4. Xcache ne compilera pas et apc ne reconnaîtra pas certaines classes une fois mises en cache. Je pense que c'est l'erreur dont parle Simon.

J'ai entendu dire qu'il y avait des correctifs dans le coffre, mais j'ai également essayé les dernières sources de coffre, mais les mêmes erreurs reviennent sans cesse. Je pense que php sans opcode cacher (il n'y en a pas de disponible pour le moment) n'est pas digne de la production. J'espère que les gens de l'apc régleront ce problème dès que possible.

METTRE À JOUR!!!

Xcache 2.0.0-rc1 est sorti et compatible avec php 5.4. Prendre plaisir!

Michiel Thalen
la source
4

J'utilise AMPPS avec PHP version 5.5.19. Depuis quelque temps, exactement depuis la sortie de PHP 5.5 - APC est remplacé par Zend OPCache qui est inclus dans PHP 5.5 et plus. Maintenant, tout ce que vous avez à faire pour activer "APC" (actuellement "OPcache") est d'éditer votre php.ini. Avant la section [XDebug], ajoutez les lignes fluides:

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

...

Veuillez noter que nous devons avoir deux instances de:

zend_extension =

Un dans [OPcache] et un dans la section [XDebug]. Xdebug n'est souvent pas fourni par défaut dans l'installation de votre serveur xampp / ampps / easyPHP. Vous pourriez vous retrouver dans une situation où vous devrez télécharger l'extension Xdebug. Vous pouvez le faire facilement en utilisant une application en ligne qui définit le bon Xdebug pour votre php. Visitez http://xdebug.org/wizard.php et suivez leurs instructions simples. Une fois que vous avez téléchargé la bonne version de Xdebug pour votre version php - éditez le lien de votre zend_extension dans la section [XDebug].

...

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

Notez s'il vous plaît! que vous devez ajouter la section OPcache avant XDebug dans votre fichier php.ini !!! Si vous me suivez correctement, vous devriez avoir deux instances de zend_extension dans votre fichier php.ini (une dans OPcache et une dans la section Xdebug).

Cela fonctionne parfaitement pour le framework Symfony2 et élimine les messages de recommandation pour installer et activer APC pour votre PHP et Xdebug.

Message à ceux qui exécutent symfony 2 et ont supprimé le message d'avertissement de "web / config.php", mais rencontrent toujours un problème en exécutant à partir de la ligne de commande "php app / check.php". Si cela se produit, cela signifie que votre console utilise un fichier php.ini différent. Changez la variable PATH de votre système - faites-la pointer vers le bon répertoire php (où vous avez votre fichier php.exe et qui est utilisé par votre serveur local).

Si vous avez besoin d'explications plus approfondies, faites-le moi savoir dans le commentaire ci-dessous. Cordialement.

DevWL
la source
1
Je recommande vivement que les instructions de cette réponse soient fusionnées avec la réponse supérieure, afin que tous ceux qui souhaitent implémenter OpCache sachent exactement comment le faire.
Joe
Si vous commentez xdebug "zend_extension", vous le désactivez - ce n'est pas nécessaire. L'ajout de la section [OPcache] avec "zend_extension" n'entre pas en conflit avec le même paramètre de la section [XDebug]. L'ordre de ces sections n'a pas non plus d'importance.
Marek
Remarque: [source: php.net/manual/en/opcache.installation.php] Si vous souhaitez utiliser OPcache avec »Xdebug, vous devez charger OPcache avant Xdebug.
DevWL
3

Il semble que certains problèmes restent à régler. Vérifiez les bogues et vous pourrez peut-être déterminer quelle est la solution à votre problème particulier.

J'ai traité une de ces erreurs il y a quelques heures, et il s'est avéré que l'utilisation d'APC à partir du tronc SVN était la voie à suivre. J'espère que cela t'aides!

Roberto
la source
Eh bien, jusqu'à présent, cela semble fonctionner correctement. Ceci est sur Ubuntu 10.04 (appareil LAMP clé en main) avec les packages PHP 5.4 de launchpad.net/~ondrej/+archive/php5 . Mais si quelque chose arrive, je vais vérifier la liste des bogues. Merci!
Greywire
3

J'ai constaté que vous devez effacer le cache opcode sur chaque demande de page, sinon les classes qui implémentent les interfaces ne se chargent pas. Cela a été compilé à partir du dernier tronc svn, Apache 2.4.1, PHP 5.4.0.

Simon
la source
@ michiel-thalen vous êtes sur place, c'est le problème dont je parlais. C'est vraiment dommage ... Bien que j'aie encore vu un léger avantage en termes de performances même avec la réinitialisation de l'opcode à chaque chargement. Le cache utilisateur fonctionne toujours comme prévu (dans mes tests jusqu'à présent).
Simon
2

APC - non recommandé
Personnellement, je n'ai pas utilisé APC avec PHP 5.4 ou PHP 5.5, mais le dernier APC stable n'est pas compatible avec PHP 5.4, la dernière version bêta d'APC peut être utilisée avec la version 5.4 mais il est écrit que des problèmes négatifs avec APC persistent.

Si vous avez PHP 5.5,
utilisez simplement Zend Opcache . Il est prêt à l'emploi, les problèmes sont donc minimes.

Si vous avez PHP 5.4,
je recommande XCache . Il est entièrement compatible avec PHP 5.4 et 5.5. Développé activement. La dernière version stable a été publiée il y a 3,5 mois (10 octobre 2013). Cela améliore les performances même si vous utilisez fastcgi.

trante
la source
1

Zend OPCache est inclus dans PHP 5.5 sous le nom php_opcache.dll dans le répertoire php / ext. Pour l'activer:

  • Ajoutez le fichier php_opcahe.dll en tant qu'extension zend dans votre fichier de configuration php.ini .
  • Utilisez le format zend_extension = chemin / vers / php / ext / php_opcache.dll .
  • Placez le zend_extension avant le xDebug zend_extension dans votre configuration php.ini .
  • Enregistrez votre fichier de configuration php.ini et redémarrez votre serveur.
RACINE
la source
0

APC a une nouvelle version: 3.1.14 depuis le 2 janvier, qui résout certains bogues: http://pecl.php.net/package/APC

Cependant, j'ai utilisé PHP 5.4.x avec APC 3.1.13 depuis le référentiel dotdeb sans aucun problème jusqu'à présent, donc pour moi je dirais que c'est stable. dotdeb m'a également informé qu'ils incluraient l'APC mis à jour dans la prochaine version de PHP, qui devrait être la version 5.4.11.

Steven De Groote
la source
Si vous utilisez APC 3.1.14, je vous conseille de revenir temporairement à APC 3.1.13. Quelques bogues sérieux liés à la mémoire ont été découverts, ce qui a entraîné le retrait de la version 3.1.14 de la section des téléchargements.
Leigh
En effet, j'ai trouvé que le paquet publié par dotdeb pour PHP 5.4.11 incluait initialement APC 3.1.14 mais cela a été annulé pour éviter les bogues.
Steven De Groote
0

Nous expérimentons des erreurs de mémoire libre (apache segfault) avec PHP 5.4.26 et APC 3.1.9. Il y a un bogue ouvert pour APC sur PHP 5.4.X: https://bugs.php.net/bug.php?id=61934

Je recommande de ne pas utiliser ce plugin sur PHP> 5.3.

dAm2K
la source
0

Dans XAMPP version 5.6.3 (PHP 5.6.3), tout ce que vous avez à faire dans votre ini.php est ceci:

[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"

Configuration pour le framework symfony2.

DevWL
la source