contao/import — Issue #3089: yace backport: __autoload()
Author: LeoUnglaub
Created: 2011-11-29 20:51:04+00:00
State: open
Labels: Feature, framework

Hallo Leo,
wie per E-Mail angekündigt möchte ich dir ein paar Tweaks auf den Yace Projekt anbieten um diese auch im Contao Core einzubauen. Als erstes habe ich hier einen patch für die function __autoload(). Aktuell hat diese Funktion das Problem, dass wenn die Klasse nicht unter system/libraries liegt, alle Modulordner pro Methoden-Aufruf durchlaufen werden müssen. Ich habe mal die music_academy zum testen herangezogen und pro FE Aufruf muss der autoloader bis zu 40 mal nach einer Klasse suchen. Das ist enorm viel IO.

Daher habe ich das ganze gecached. Dabei mache ich nichts weiter als mir Sessionübergreifend zu merken wo ein File lag und dann einfach zu includen. Mein Autoloader lernt automatisch alle Pfade und kann diese auch wieder "vergessen" wenn es die Klasse nicht mehr gibt. Durch diesen dynamischen Aufbau kann ich bereits nach 5 bis 10 Klicks im Backend 99% aller Anfragen cachen. Das spart unter Last extrem viel Ressourcen.

Anbei ein patch und einmal die vollständige Datei. Ich habe im Patch das cache file unter system/config/autoloader.php gespeichert. In Yace habe ich eine andere Ordner-Struktur (ich habe dort kein Frontend, sondern nur das BE) daher musst du das vielleicht noch anpasen.

Wenn Rückfragen sind, entweder hier oder auch sehr gerne im IRC.
Viele Grüße
Leo

[Download the attachments](http://www.contao.org/tl_files/tickets/3089.zip "Download the attachments of this ticket")

--- _Originally created on May 18th, 2011, at 03:40am (ID 3089)_