Eine Reihe von Frameworks verwenden spl_autoload_register()
für das dynamische Laden von Klassen (d. h. Controller und Modelle). Es gibt ein paar Posts zum Thema Autoloading und Opcode-Caching. Ein Beitrag hat insbesondere eine Antwort von @cletus, die @Rasmus referenziert, indem er eine Anzahl von Anweisungen erstellt, die sich als unappetitlich für diejenigen erweisen, die APC als Opcode-Cache verwenden:
Es scheint keine Diskussion über mögliche Alternativen zum Autoloading zu geben, die die Opcode-Cache-Leistung nicht beeinflussen.
Gibt es eine Möglichkeit, die Tatsache zu umgehen, dass automatisch geladene Klassen nicht zum Bytecode-Cache hinzugefügt werden?
Wenn nicht, gibt es alternative Methoden zum dynamischen Laden von Klassen, die zwischengespeichert werden?
Es scheint immer noch Verwirrung über dieses Thema zu geben, aber in den meisten Fällen kommt es auf die Leichtigkeit vs Leistung.
Ein guter Mailinglisten-Thread zum Lesen wäre dieser in der Zend Frameworks Mailingliste:
Nun ist die Korrelation hier, denn wenn Sie von noch nicht definiert erben Klasse, können Sie sich auf Autoload verlassen, um es zu definieren (obwohl Sie auch könnten verlassen sich auf), und tatsächlich das Vorhandensein der Autoload-Einrichtung kann ermutigen Sie, solche Vererbung zu verwenden. Aber das ist nicht das Autoload Das bringt Ärger (siehe Ramus '"es ist nicht nur Autoload" in der Blog für einige Beispiele von lästigen Dingen). Der richtige Satz wäre also "Leute, die sich eher auf Autoload verlassen auch um Code zu verwenden, der die Kompilierzeitbindung verbietet. "Was nicht gesehen werden kann als Autoload-Fehler natürlich, und einfach Autoload zu vermeiden wird nicht helfen a Bit damit - Sie müssten auch Ihren Code neu schreiben, so dass Compile-Time-Bindung könnte passieren. Und es hat nichts mit Verwendungen von Autoload mit zum Beispiel "neu".
Was die Verlangsamung von den oben beschriebenen Wirkungen anbetrifft - d.h. Abwesenheit von die Compile-Time-Bindung - der Code wird tatsächlich ein bisschen langsamer und so Code kann in einigen obskuren Fällen zu einigen Schwierigkeiten führen, Caches zu opcodieren (nicht in den Autoload-Fällen - aber in Fällen, in denen Klassen definiert sind innere Bedingungen oder, Gott bewahre, wird eine andere Definition geschaffen je nach Zustand) - aber es hat mit der Verwendung so gut wie nichts zu tun Autoload von selbst. Die Höhe der Verlangsamung scheint jedoch stark von Leute - es ist nichts (und ich wiederhole es klar zu sein - NOTHING ) verglichen zu dem Leistungsvorteil durch den Opcode-Cache aufgrund der Abwesenheit gegeben der Datenträgeroperationen und der Kompilierungsstufe. Das könntest du wahrscheinlich komponieren Sie eine künstliche Benchmark, die einige signifikante zeigen würde Verlangsamung, aber ich glaube nicht, dass eine echte Anwendung es überhaupt bemerken würde.
Quelle: Ссылка
Tags und Links php frameworks autoload opcode-cache