2009-07-11 9 views
4

Ich lief meinen Code durch xdebug Profiler und sah mehr als 30 Prozent der Zeit ist für die require() -Aufrufe ausgegeben. Was ist der beste Weg, um dies zu verbessern? Ich habe ein paar Beiträge zur Verwendung von __autoload gesehen, aber es gab widersprüchliche Aussagen über die Auswirkungen auf APC (die wir verwenden) und Zweifel an der Verwendung, um die Leistung zu verbessern.PHP-Leistung durch require() behindert

+0

Haben Sie stattdessen include() versucht? –

+0

ist nicht erforderlich() nur eine Hard-Fail-Version von include()? – bob

+0

In der Theorie ja. Ich fragte mich, ob es einen großen Einfluss haben könnte, also die Frage in einem Kommentar und nicht eine Antwort :) –

Antwort

3

Der Grund, warum benötigt wird, ist die Festplatten-E/A-Geschwindigkeit. Sie können versuchen, Autoloading zu verwenden, da Sie möglicherweise Dateien benötigen, die nicht tatsächlich verwendet werden. Ein weiterer Ansatz zur Reduzierung des Festplatten-IO-Overheads besteht darin, Ihre PHP-Dateien in einer großen Datei zusammenzufassen. Eine große Datei zu benötigen, die den Code enthält, den Sie immer benötigen, ist schneller, als den gleichen Code in mehrere kleine Dateien einzuschließen.

Auch hat APC eine Funktion, die beschleunigt erfordert apc.include_once_override, die Sie versuchen können, zu aktivieren.

+0

beziehen Sie sich auf apc.stat? – bob

+0

Es ist apc.include_once_override –

0

Wie viele Elemente befinden sich in Ihrem Include-Pfad? und ist die Reihenfolge der Standorte für Ihre Anwendung sinnvoll? Wenn Sie relative Pfade verwenden, werden die Positionen des Include-Pfads überprüft, um nach einer übereinstimmenden Datei zu suchen.

2

Stellen Sie sicher, dass Ihre Includes absolute statt relative Pfade verwenden. Der einfachste Weg, dies zu tun ist durch das Voranstellen Ihre Wege mit

dirname(__FILE__) // for php < 5.3 
__DIR__   // for php >= 5.3 
1

Sie können mit PHP Compiler Geschwindigkeit des Codes verbessern, wie http://eaccelerator.net/.

Ein solcher Compiler macht alles schneller, auch Dateien.

1

APC und Autoload hatte einmal Probleme. Das ist lange her. Im Allgemeinen kann APC Sie require-Anweisungen beschleunigen, da es die geparsten Dateien zwischenspeichert. Standardmäßig wird APC immer noch stat die Datei, um zu sehen, ob es auf der Festplatte geändert hat. Sie können dies verhindern, indem Sie absolute Pfade verwenden und die apc.stat Einstellung deaktivieren. Beachten Sie, dass Sie den Server neu starten müssen, um den Cache zu löschen.