Russelpips: autoloader cache

Hallo,

ich habe mir eine Autoloader-Klasse geschrieben, die in bestimmten Verzeichnissen (2 an der Zahl core, apps inkl. einiger Unterverzeichnisse) nach den Klassen sucht. Nichts besonderes also. Frage: würde es Sinn machen, sich einen (zum Beispiel dateibasierten) Cache zu basteln, der die Pfade zu den Klassen speichert, um jeweils ein komplettes Durchsuchen der Verzeichnisse zu umgehen? Mir geht es hier ausschließlich Performanz und Auslastung.

grüße
russel

p.s bisher habe ich ca. 50 Klassen, aber mein Framework wächst täglich. Bisher konnte ich noch keine nennenswerten Performanzprobleme erkennen. Allerdings teste ich noch alleine in einer dev-Umgebung. Gemessen wurde noch nichts.

  1. Hallo!

    Was macht denn dein autoloader?
    Normalerweise ruft man doch damit einen include oder require auf. Das heißt, dass der Inhalt der Datei bekannt ist. Beim nächsten Klassenaufruf wird der autoloader also gar nicht mehr aufgerufen. Demnach würde auch kein Cache greifen.

    Grüße, Matze

    1. Hi,

      Was macht denn dein autoloader?
      Normalerweise ruft man doch damit einen include oder require auf. Das heißt, dass der Inhalt der Datei bekannt ist. Beim nächsten Klassenaufruf wird der autoloader also gar nicht mehr aufgerufen. Demnach würde auch kein Cache greifen.

      hmm, ich kann dir nicht ganz folgen... Was meinst du mit "nächstem Klassenaufruf"?

      "Was macht denn dein autoloader?"
      er sucht in verschiedenen Directories anhand des Dateinamens und des Namespaces nach der entsprechenden Klasse und inkludiert (bzw. required) diese. Um mir das Durchlaufen der Directories (bei jedem Programmstart) zu sparen, wollte ich einen Cache anlegen, der diese Pfade speichert.

  2. Hi,

    ich habe mir eine Autoloader-Klasse geschrieben, die in bestimmten Verzeichnissen (2 an der Zahl core, apps inkl. einiger Unterverzeichnisse) nach den Klassen sucht. Nichts besonderes also. Frage: würde es Sinn machen, sich einen (zum Beispiel dateibasierten) Cache zu basteln, der die Pfade zu den Klassen speichert, um jeweils ein komplettes Durchsuchen der Verzeichnisse zu umgehen? Mir geht es hier ausschließlich Performanz und Auslastung.

    wenn es Dir um Performance geht, dann ja.
    Außerdem würde ich dann eher einen Mechanismus basteln, der das Durchsuchen der Verzeichnisse obsolet macht; also ein kleines Script, was die Verzeichnisstruktur einliest und in einer statischen PHP-Variable speichert. Diese Variable liest dann Dein Autoloader aus.
    Das Script rufts Du bei jeder Änderung, bzw. bei jedem Deploy auf.

    Grüße

    • Steffen
    1. Hallo,

      ich habe mir eine Autoloader-Klasse geschrieben, die in bestimmten Verzeichnissen (2 an der Zahl core, apps inkl. einiger Unterverzeichnisse) nach den Klassen sucht. Nichts besonderes also. Frage: würde es Sinn machen, sich einen (zum Beispiel dateibasierten) Cache zu basteln, der die Pfade zu den Klassen speichert, um jeweils ein komplettes Durchsuchen der Verzeichnisse zu umgehen? Mir geht es hier ausschließlich Performanz und Auslastung.

      wenn es Dir um Performance geht, dann ja.
      Außerdem würde ich dann eher einen Mechanismus basteln, der das Durchsuchen der Verzeichnisse obsolet macht; also ein kleines Script, was die Verzeichnisstruktur einliest und in einer statischen PHP-Variable speichert. Diese Variable liest dann Dein Autoloader aus.
      Das Script rufts Du bei jeder Änderung, bzw. bei jedem Deploy auf.

      ja, das ist eine gute Idee. So mach ich es. danke!

  3. હેલો

    ich habe mir eine Autoloader-Klasse geschrieben, die in bestimmten Verzeichnissen (2 an der Zahl core, apps inkl. einiger Unterverzeichnisse) nach den Klassen sucht.

    Warum sucht dein Script die Klassen? Wie sieht dein Autoloader aus?

    બાય

    --
     .
    ..: