2010-11-29 11 views

Antwort

2

Ich bin nicht sicher, ob meine erstellten PHP-Codes nie geteilt werden.

Sie könnten this question hilfreich finden.

Sollte ich APC entfernen? Hat es irgendeinen Overhead?

Wie für den Overhead, wenn Sie n Prozesse haben, dann werden Sie n Caches haben. Es ist nicht platzsparend, aber es könnte noch dazu beitragen, CPU Zyklen zu reduzieren.

+0

+1, bessere Antwort als meine :) –

1

Es verwendet Opcode-Caching, aber die Caches werden nicht zwischen den PHP-Prozessen geteilt, so dass sie für jeden Prozess einmal zwischengespeichert werden. Es lohnt sich definitiv, APC zu verwenden.

Nachdem ich den Artikel gelesen habe, werde ich meine eigenen $ 0.2c hier in Bezug auf fgcid gegen fastcgi werfen. Wir haben anfangs eine Lösung ähnlich der im Artikel beschriebenen implementiert, wobei fastcgi verwendet wurde und der PHP-Prozess mehrere Kinder spawnt. Dies war ein Versuch, die Probleme der gemeinsamen Nutzung des Caches zu umgehen.

Bei dieser Lösung kam es jedoch zu periodischen vollständigen Sperren. Der PHP-Prozess würde hängen bleiben und fastcgi würde es nicht erkennen, was dazu führen würde, dass unsere gesamte App für alle Benutzer hängen würde.

Wir sind wieder auf fcgid umgestiegen und die Sperren wurden komplett eingestellt. Es gibt einige Gemeinkosten mit einem Cache pro Prozess, aber fcgid wird nur neue PHP-Prozesse erzeugen, wenn es nötig ist, so dass der Aufwand in der Praxis minimal ist.

Wir verwenden auch den User-Cache mit APC, nicht nur den Opcode-Cache. Für uns lohnt sich der Tradeoff also (zwischengespeicherte Daten bedeuten weniger Arbeit auf dem Server, Cache-Opcodes bedeuten weniger Arbeit auf dem Server) ist definitiv reduziert für eine geringe Speicherbenutzung.