Ist APC mit PHP 5.4 oder PHP 5.5 kompatibel?

103

Es scheint nicht so, als ob APC aktualisiert wurde, um mit der Veröffentlichung von PHP 5.4 übereinzustimmen (ich wünschte, sie hätten APC wie ursprünglich geplant in den PHP-Kern aufgenommen).

Ich kann anscheinend keine endgültige Antwort darauf finden, ob der aktuelle APC mit PHP 5.4+ funktioniert. Ich habe es geschafft, Ubuntu-Pakete für PHP 5.4 zu finden, aber PHP-APC-Pakete werden nicht installiert.

Greywire
quelle
2
Ich nehme an, Sie führen eine apt-get-Installation durch. Haben Sie eine Pecl-Installation versucht?
Darragh Enright
Ja, das hat tatsächlich funktioniert. Danke dir. Und wie sich herausstellt, funktioniert APC mit 5.4 einwandfrei, insbesondere wenn die neuen Merkmale verwendet werden.
Greywire
1
@Darragh [lass es dich nur wissen] Es gibt eine Menge Kopfgeld dafür, vielleicht möchtest du eine Antwort geben.
Tiberiu-Ionuț Stan
1
Nein ist es nicht. Seine letzte Veröffentlichung war im Jahr 2012 und das ist sicherlich nicht kompatibel mit neueren Versionen von PHP
Abadis

Antworten:

163

Zend OPCache in PHP 5.5 enthalten

Am 21. März 2013 an dem wurde PHP 5.5 Beta 1 mit „Zend OPCache“ veröffentlicht - Es sieht fest , wie dies der Ersatz sein für APC geht nach vorn , wie es in dem PHP - Kern enthalten ist, und wird werden muß für jeden neuen beibehalten Freisetzung.

Ich würde denjenigen, die beim Opcode-Caching auf APC angewiesen sind, persönlich raten, ihren Code mit dem bevorstehenden integrierten Opcode-Cache zu testen und alle aufgetretenen Probleme zu beheben, um eine stabile endgültige Version sicherzustellen.

Ich weiß nicht, was dies für die Zukunft von APC bedeutet.

APC FÜR PHP 5.4+ IST NOCH ALS BETA FLAGGT

Dies bedeutet, dass die Entwickler es nicht als vollständig stabil betrachten . Während viele Leute überhaupt keine Probleme mit den aktuellen SVN-Versionen haben, gibt es immer noch den seltsamen Bericht über Randfälle von Leuten unter bestimmten Konfigurationen oder unter hoher Last.

Wie bei allem , was Sie in einer Produktionsumgebung verwenden möchten würden, stellen Sie sicher , gründlich Sie einen Release - Test (Beta oder stabil) in der Entwicklung oder die Pre-Production - Umgebungen zuerst . Dies beinhaltet Lasttests!

Ab dem Release 3.1.13 haben Commits zum SVN - Repository etwas und das verlangsamt Fehlerliste hat nicht so viele neue Zusätze. Machen Sie daraus, was Sie wollen.

Am 10. Dezember 2012 um 21:05 Uhr schrieb Rasmus Lerdorf:

APC ist jetzt an dem Punkt für 5.4 angelangt, an dem es meines Erachtens nicht mehr Randfälle gibt als in 5.3. Beides ist nicht perfekt, aber es ist nah genug für die meisten Websites.

Wer mit C / GDB Fähigkeiten und einige freie Zeit wird aufgefordert , die beschönigen Bugliste und sehen , ob sie alles reparieren kann, oder verbessern das freie Open - Source - Produkt , dass wir alle verlassen sich auf.

Es gibt alternative Lösungen, Wikipedia bietet eine Liste von PHP-Beschleunigern .

Am 13. Februar 2013 gab Zeev Suraski die Verfügbarkeit des Quellcodes Zend Optimizer + bekannt .

Es gab eine ziemlich lange Diskussion über die Integration von Zend Optimizer + in den PHP-Kern in der nächsten Hauptversion (der Version nach 5.5). In diesem Fall möchten sich die Benutzer möglicherweise im Voraus mit Zend Optimizer + vertraut machen.


Verwenden Sie APC 3.1.14 nicht

APC 3.1.14 wurde aufgrund einiger schwerwiegender Speicherprobleme, die entdeckt, aber noch nicht aufgespürt wurden, aus PECL- Downloads entfernt .

Wenn Sie bereits 3.1.14 verwenden, möchten Sie möglicherweise ein Downgrade durchführen, bis 3.1.15 veröffentlicht ist. Denken Sie daran, dies ist noch Beta . Wenn Sie es überhaupt verwenden, verwenden Sie es auf eigenes Risiko.

2013-01-02 :
APC 3.1.14 ist verfügbar und bietet PHP 5.5-Kompatibilität sowie eine Reihe weiterer Fehler .

Immer noch Beta


2012-09-03 :
APC 3.1.13 ist verfügbar und behebt eine Reihe von Segfaults .


2012-08-16 :
Ein APC 3.1.12-Tag wurde erstellt, ist jedoch weiterhin als Beta markiert. Es ist auf der APC PECL-Seite sowie im Änderungsprotokoll verfügbar .

Diesmal wurden viele Fehler im Zusammenhang mit bin_dump behoben.


2012-07-19 :
Ein APC 3.1.11-Tag wurde erstellt, ist jedoch weiterhin als Beta markiert. Es ist auf der APC PECL-Seite sowie im Änderungsprotokoll verfügbar . Ich habe die relevanten Mailinglisten verfolgt und sie arbeiten immer noch aktiv an der Behebung von APC-Fehlern. Es handelt sich jedoch um ein komplexes Modul, und nicht viele Leute scheinen der Aufgabe gewachsen zu sein. Diese Version behebt die bösen stat = 0-Fehler beim Einschließen von Dateien.


2012-04-11 : Heute wurde
ein APC 3.1.10-Tag erstellt und eine Beta-Version von 3.1.10 wurde auf der APC PECL-Seite platziert.

Das Änderungsprotokoll lautet:

  • PHP 5.4-Unterstützung hinzufügen (Dmitry, Anatoliy, Pierre)
  • Fehler # 22679 behoben: apc_bin_dump für Konstanten behoben. Verwenden Sie IS_CONSTANT_TYPE_MASK, um alle Konstanten zu verarbeiten, einschließlich der nicht qualifizierten (anstelle der Prüfung ~ IS_CONSTANT_INDEX).
  • Fehler # 23822 behoben, PHP stürzt beim Neustart von Apache ab
Leigh
quelle
1
Geben Sie einfach: "pecl install apc-3.1.10" ein und dann musste ich php neu kompilieren, damit libphp5.so
targnation
Ich benutze es seit Oktober 2012 über Apt-get auf Ubuntu 12. Sauber und stabil!
JustinP
Werfen Sie einen Blick auf diesen Artikel im Zusammenhang mit Zend OpCache und APC blogs.oracle.com/opal/entry/using_php_5_5_s und diesen Thread bugs.php.net/bug.php?id=64625
Riotera
10

Ab PHP 5.4.7 und APC 3.1.13 (und sogar APC SVN-Trunk ab 19.09.2012) ist es zwar "kompatibel", aber auf Servern mit hoher Last nicht stabil, insbesondere wenn Sie PHP- verwenden. FPM und $ GLOBALS. Einige der Entwicklerdiskussionen zu APC befassen sich mit ungelösten Randfällen .

Ich beantworte diese Frage 6 Monate nachdem sie gestellt wurde, weil das Problem immer noch weit verbreitet ist. Wenn ich auf diesen Thread ohne eine Antwort wie meine stoße, habe ich den Sprung zu PHP 5.4 mit APC geschafft und mich verbrannt. Hoffentlich hilft dies den Menschen, Schmerzen zu vermeiden.

Eric Caron
quelle
6

Es scheint, dass der Fehler "möglicherweise" in der letzten Version des Trunks behoben wurde. Ich habe es jetzt mit PHP 5.4.0 zum Laufen gebracht.

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

cd apc-trunk

phpize

./konfigurieren

machen

make install

Simon
quelle
apc ist nicht mehr in svn.php.net/repository/pecl. Repo wurde in Git konvertiert und kann jetzt unter git.php.net/?p=pecl/caching/apc.git
Dereckson
5

Nein, APC 1.3.9 (und ab diesem Moment sogar der SVN-Trunk) ist nicht mit PHP 5.4.0 kompatibel. Ich weiß, dass ich nur stundenlang versucht habe, es zum Laufen zu bringen (verschiedene SVN / PHP getestet). INI-Einstellungen / Compiler-Flags / Sie nennen es).

Das ist einfach lächerlich, APC ist eine der beliebtesten PHP-Erweiterungen und man würde erwarten, dass sie nach wochenlangem Durchlaufen von 8 PHP 5.4-RCs die Zeit haben würden, APC dazu zu bringen, nebenher zu arbeiten.

Erbärmlich.

John Smith
quelle
Vielleicht war APC deshalb nicht wie ursprünglich geplant in PHP 5.4 enthalten. Es schien zu funktionieren, als ich es getestet habe, aber ich habe nur Eigenschaften und keine der anderen PHP 5.4-Funktionen getestet.
Greywire
2
Es scheint, dass der einzige brauchbare Cache / Bytecode-Compiler für PHP 5.4 Zends eigenes Zend-Server-Paket ist. PHP 5.4 hat mich irgendwie aufgeregt, aber ohne APC oder XCache oder so, es ist nutzlos. Und das ist seit Jahren die Geschichte von PHP. Immer warten, warten. Ich beginne ernsthaft darüber nachzudenken, eine andere Sprache zu lernen. Nur nicht sicher, was.
Greywire
Zwar wurde der Segfault-Fehler bereits im Dezember letzten Jahres gemeldet, und 3 Monate später ist er immer noch nicht behoben. WTF ist der Punkt, an dem ein "größeres Upgrade" veröffentlicht wird, wenn es unter den häufigsten Bedingungen nicht einmal funktioniert. [Bug # 60462 Wenn APC aktiviert ist segfault - Eingereicht: 2011-12-07] bugs.php.net/bug.php?id=60462&edit=1
JohnSmith
5

Nun, ich versuche es in den letzten Tagen und es gibt keine Möglichkeit, einen Opcode-Cacher dazu zu bringen, mit PHP 5.4 zu arbeiten. Xcache wird nicht kompiliert und apc erkennt bestimmte Klassen beim Zwischenspeichern nicht. Ich denke, das ist der Fehler, über den Simon spricht.

Ich habe gehört, dass es einige Korrekturen im Trunk gibt, aber ich habe auch die neuesten Trunk-Quellen ausprobiert, aber die gleichen Fehler treten immer wieder auf. Ich denke, PHP ohne Opcode-Cacher (es gibt derzeit keinen) ist nicht produktionswürdig. Hoffentlich werden die Leute bei apc dies so schnell wie möglich beheben.

AKTUALISIEREN!!!

Xcache 2.0.0-rc1 ist out und kompatibel mit PHP 5.4. Genießen!

Michiel Thalen
quelle
4

Ich verwende AMPPS mit PHP Version 5.5.19. Seit einiger Zeit genau ab der Veröffentlichung von PHP 5.5 wird APC durch Zend OPCache ersetzt, das in PHP 5.5 und höher enthalten ist. Jetzt müssen Sie nur noch Ihre php.ini bearbeiten, um "APC" (derzeit "OPcache") zu aktivieren. Fügen Sie vor dem Abschnitt [XDebug] die fließenden Linien hinzu:

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

...

Bitte beachten Sie, dass wir zwei Instanzen benötigen :

zend_extension =

Eine im Abschnitt [OPcache] und eine im Abschnitt [XDebug]. Xdebug wird in Ihrer xampp / ampps / easyPHP-Serverinstallation häufig nicht standardmäßig bereitgestellt. Möglicherweise befinden Sie sich in einer Situation, in der Sie die Xdebug-Erweiterung herunterladen müssen. Sie können dies einfach tun, indem Sie eine Online-Anwendung verwenden, die den richtigen Xdebug für Ihr PHP definiert. Besuchen Sie http://xdebug.org/wizard.php und folgen Sie den einfachen Anweisungen. Sobald Sie die richtige Version von Xdebug für Ihre PHP-Version heruntergeladen haben, bearbeiten Sie den Link Ihrer zend_extension im Abschnitt [XDebug].

...

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

Bitte beachten Sie! dass Sie den OPcache-Abschnitt vor XDebug in Ihre php.ini-Datei einfügen müssen !!! Wenn Sie mir richtig folgen, sollten Sie zwei Instanzen von zend_extension in Ihrer php.ini-Datei haben (eine in OPcache und eine in Xdebug).

Dies funktioniert perfekt für Symfony2 Framework und beseitigt die Empfehlungsmeldung zum Installieren und Aktivieren von APC für Ihr PHP und Xdebug.

Nachricht an diejenigen, die Symfony 2 ausführen und die Warnmeldung aus "web / config.php" entfernt haben, aber dennoch ein Problem haben, wenn sie über die Befehlszeile "php app / check.php" ausgeführt werden. In diesem Fall bedeutet dies, dass Ihre Konsole eine andere php.ini-Datei verwendet. Ändern Sie die System-PATH-Variable - zeigen Sie auf das richtige PHP-Verzeichnis (in dem Sie Ihre php.exe-Datei haben und die von Ihrem lokalen Server verwendet wird).

Wenn Sie eine ausführlichere Erklärung benötigen, lassen Sie es mich im Kommentar unten wissen. Grüße.

DevWL
quelle
1
Ich empfehle dringend, die Anweisungen dieser Antwort mit der obersten Antwort zusammenzuführen, damit jeder, der den OpCache implementieren möchte, genau weiß, wie das geht.
Joe
Wenn Sie xdebug "zend_extension" auskommentieren, schalten Sie es aus - es ist nicht notwendig. Das Hinzufügen des Abschnitts [OPcache] mit "zend_extension" kollidiert nicht mit demselben Parameter aus dem Abschnitt [XDebug]. Auch die Reihenfolge dieser Abschnitte spielt keine Rolle.
Marek
Hinweis: [Quelle: php.net/manual/en/opcache.installation.php] Wenn Sie OPcache mit »Xdebug verwenden möchten, müssen Sie OPcache vor Xdebug laden.
DevWL
3

Es scheint einige Probleme zu geben, die noch ausgeräumt werden müssen. Schauen Sie sich die Fehler an und finden Sie möglicherweise heraus, wie Sie Ihr spezielles Problem lösen können.

Ich habe mich vor einigen Stunden mit einem solchen Fehler befasst, und es stellte sich heraus, dass die Verwendung von APC aus dem SVN-Trunk der richtige Weg war. Hoffe das hilft!

Roberto
quelle
Nun, bis jetzt scheint es gut zu funktionieren. Dies ist unter Ubuntu 10.04 (schlüsselfertige LAMP-Appliance) mit PHP 5.4-Paketen von launchpad.net/~ondrej/+archive/php5 möglich . Aber wenn sich etwas ergibt, überprüfe ich die Fehlerliste. Vielen Dank!
Greywire
3

Ich habe festgestellt, dass Sie den Opcode-Cache bei jeder Seitenanforderung löschen müssen, da sonst Klassen, die Schnittstellen implementieren, nicht geladen werden können. Dies wurde aus dem neuesten SVN-Trunk, Apache 2.4.1, PHP 5.4.0, kompiliert.

Simon
quelle
@ michiel-thalen du bist genau richtig, das ist das Thema, über das ich gesprochen habe. Es ist wirklich eine Schande ... Obwohl ich trotz des Zurücksetzens des Opcodes bei jedem Laden immer noch einen leichten Leistungsvorteil gesehen habe. Der Benutzercache funktioniert weiterhin wie vorgesehen (in meinen bisherigen Tests).
Simon
2

APC - nicht empfohlen
Persönlich habe ich APC nicht mit PHP 5.4 oder PHP 5.5 verwendet, aber der neueste stabile APC ist nicht mit PHP 5.4 kompatibel. Der neueste Beta-APC kann mit 5.4 verwendet werden, es wurde jedoch geschrieben, dass immer noch negative Probleme mit APC auftreten.

Wenn Sie PHP 5.5 haben, verwenden Sie
einfach Zend Opcache . Es ist sofort einsatzbereit, daher sind die Probleme minimal.

Wenn Sie PHP 5.4 haben,
empfehle ich XCache . Es ist voll kompatibel mit PHP 5.4 und 5.5. Aktiv entwickelt. Die letzte stabile Version wurde vor 3,5 Monaten (10. Oktober 2013) veröffentlicht. Es verbessert die Leistung, selbst wenn Sie fastcgi verwenden.

trante
quelle
1

Zend OPCache ist in PHP 5.5 unter dem Namen php_opcache.dll im Verzeichnis php / ext enthalten. Um es zu aktivieren:

  • Fügen Sie die Datei php_opcahe.dll als zend-Erweiterung in Ihre Konfigurationsdatei php.ini ein .
  • Verwenden Sie das Format zend_extension = path / to / php / ext / php_opcache.dll .
  • Platzieren Sie die zend_extension vor der xDebug zend_extension in Ihrer php.ini-Konfiguration .
  • Speichern Sie Ihre Konfigurationsdatei php.ini und starten Sie Ihren Server neu.
WURZEL
quelle
0

APC hat seit dem 2. Januar eine neue Version: 3.1.14, die einige Fehler behebt: http://pecl.php.net/package/APC

Allerdings habe ich PHP 5.4.x mit APC 3.1.13 aus dem Dotdeb-Repository bisher ohne Probleme ausgeführt, daher würde ich sagen, dass es stabil ist. dotdeb hat mich auch darüber informiert, dass sie den aktualisierten APC in die nächste Version von PHP aufnehmen werden, die voraussichtlich 5.4.11 sein wird.

Steven De Groote
quelle
Wenn Sie APC 3.1.14 verwenden, empfehle ich Ihnen, vorübergehend auf APC 3.1.13 zurückzugreifen. Es wurden einige schwerwiegende Speicherfehler entdeckt, die dazu geführt haben, dass die Version 3.1.14 aus dem Download-Bereich entfernt wurde.
Leigh
In der Tat stellte ich fest, dass das von dotdeb für PHP 5.4.11 veröffentlichte Paket ursprünglich APC 3.1.14 enthielt, das jedoch zurückgesetzt wurde, um die Fehler zu vermeiden.
Steven De Groote
0

Wir experimentieren mit speicherfreien Fehlern (Apache Segfault) mit PHP 5.4.26 und APC 3.1.9. Es gibt einen offenen Fehler für APC unter PHP 5.4.X: https://bugs.php.net/bug.php?id=61934

Ich empfehle, dieses Plugin nicht unter PHP> 5.3 zu verwenden.

dAm2K
quelle
0

In XAMPP Version 5.6.3 (PHP 5.6.3) müssen Sie in Ihrer ini.php nur Folgendes tun:

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

Konfiguration für das symfony2-Framework.

DevWL
quelle