23. Oktober 2007

bootstrap mit eigenem stream_wrapper

Kategorie: Programmieren & PHP — tomatenschaf @ 00:27

Die Jungs von 1&1 hatten eine gute Idee, um unnötige Filesystemzugriffe beim include zu umgehen: ihr Framework stubbles nutzt einen stream wrapper, um mit einer einzigen includedatei alle Klassen nachzuladen.

Das funktioniert ungefähr so:

  • alle Klassen befinden sich in einer einzigen (riesigen) Datei
  • von dieser wird nach dem require nur der Beginn (bis ‘__halt_compiler()’) eingelesen
  • dieser enthält den Wrapper und den Manager zum ‘Nachladen’ benötigter Klassen
  • fseek positioniert den Zeiger innerhalb des eigenen Wrappers
  • include und require nutzen den Wrapper
  • erst nach dem ‘Nachladen’ wird die Klasse geparced

Klingt kompliziert? Ist es auch. Aber man umgeht folgendes Dilemma:

  • Nutzt man __autoload(); gibt es bei jeder neuen Klasse einen Aufruf im Filesystem
  • Nutzt man ein einziges include (großes File mit allen Klassen) werden alle Klassen sofort geparced und kompiliert, erst danach beginnt die Scriptausführung

Ob und wieviel Laufzeit dies spart, habe ich noch nicht getestet, aber die Idee klingt recht vielversprechend!

So, wer jetzt neugierig geworden ist, sollte sich die Datei /lib/stubbles.php im Framework zu Gemüte führen, dann werden meine Ausführungen ja vieleicht klarer ;o)

Keine Kommentare »

Noch keine Kommentare.

RSS-Feed für Kommentare zu diesem Beitrag. | TrackBack URI

Einen Kommentar hinterlassen

XHTML ( You can use these tags):
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> .