T-Rex: Datei include dauert sehr lange

Beitrag lesen

Moin,

also wir haben die Ursache gefunden.
Das Framework besteht aus zwei Dateien (zwei Klassen). Nennen wir sie mal a und b. Die Datei a includiert die Datei b, wenn die Klasse von Datei b noch nicht geladen wurde. Im code sieht das wie folgt aus:

if(!class_exists('KLASSE')) {  
  //-- include Datei b  
}

An der Stelle hat Sven natürlich recht, hier wird Code ausgeführt. In meiner überheblichen Art hätte ich jedoch niemals gedacht dass hier ein Problem sein könnte. Zumal meine ersten Tests hier keinen Zeitfresser ausmachten, aber da hab ich wohl unsauber getestet.
Ich konnte die Funktion class_exists als Zeitfresser ausmachen. Aber nur in unserem richtigen System. Das System benutzt nämlich die tolle funktion __autoload. Diese wiederum haben wir mit ein wenig Logik versehen. Die sucht in Verzeichnissen nach einer Klasse. (nebenbei, die aufgepimpte Autload funktion sollte ich generell mal vorstellen)
Was ich nicht wusste ist das class_exists() die __autoload funktion auslöst, wenn es die Klasse nicht gefunden hat. Unsere __autoload funktion sucht dann in diversen Verzeichnissen nach einer bestimmten Datei und liefert am Ende false zurück, da diese Datei nicht unserer Struktur entspricht. Und dieser Suchvorgang dauert eben ein wenig.

Eigentlich müsste ich die __autload funktion umbauen, so dass aufrufe von class_exists sofort mit false quitiert werden. Ich habe jedoch erstmal das if(!class_exists()) aus dem Code genommen. Das brauchen wir an der Stelle nicht.

Danke für eure Hilfe!

Gruß
dino_exists( T-Rex )