Christian Seiler: PHP-Autoloading für Funktionen

Beitrag lesen

Hallo,

Was macht dieser Opcode-Cache genau? Bisjetzt cache ich nur generierte Ausgaben, Grafiken und PDFs. Was wird da genau gecached?

Opcodes. ;-)

Wenn PHP eine Datei ausführt, dann passiert folgendes: In Schritt 1 wird die Datei geparset und kompiliert und das Ergebnis davon wird im Speicher als sogenannte "Opcodes" abgelegt. Im zweiten Schritt werden diese Opcodes dann von PHP der Reihe nach ausgeführt. Zu Opcodes hatte ich vor einiger Zeit etwas geschrieben - zwar aus anderem Anlass, aber evtl. hilft es Dir, das ganze zu verstehen.

Der Witz an Opcode-Caches ist nun, dass sie den Kompiliervorgang (der evtl. einiges an Zeit kostet, weil da rumgeparst werden muss usw.) überflüssig machen, weil sie die fertigen Opcodes einer Datei im Speicher oder auf der Festplatte abgelegen und solange sich die Datei nicht mehr ändert, die Datei nicht erneut kompiliert werden muss.

Wenn Du also Angst hast, dass es Performance kostet, dass PHP so eine riesige Datei von Dir jedes Mal parsen muss, dann kannst Du dem mit Opcode-Caches entgegen wirken. Dann spricht auch nichts dagegen, alle Funktionen, die Du hast, immer zu laden.

Einziges Problem: Du musst Kontrolle über die PHP-Installation haben, um einen Opcode-Cache verwenden zu können oder der Admin muss das für Dich einrichten.

Andererseits: Wenn Du so extrem viele Funktionen hast, dass Du das schon als viel empfindest, die imemr zu laden, dann spricht das eher für ein schlechtes Design, das Du evtl. korrigieren solltest. Wenn Du mit OOP nicht besonders grün bist, wäre evtl. ein gutes Buch zu OOP Design Patterns nicht schlecht, hier kursierte vor einiger Zeit auch mal eine Empfehlung, allerdings ist sie mir gerade entfallen - vielleicht liest ja auch jemand anderes noch mit...

Viele Grüße,
Christian