2010-12-01 13 views
12

Mögliche Duplizieren:
Why is require_once so bad to use?PHP gehören vs include_once (Geschwindigkeit)

ich irgendwo gelesen habe, dass die include_once und require_once Aussagen in PHP langsamer waren als ihre nicht einmal Pendants. Ist das eine deutliche Verlangsamung? Gab es Tests oder Studien dazu und hat sich das in den letzten Versionen von PHP geändert?

+2

wiederholte Frage - http://Stackoverflow.com/questions/186338/why-is-require-once-so-bad-to-use – ajreal

+1

Warum der Downrate? – Cybrix

Antwort

14

Die Geschwindigkeitssteigerung ist minimal und erfolgt als Referenzprüfung, um Code-Duplizierung zu verhindern. Der "einmalige" Anhang ist eine vorbeugende Maßnahme gegen denselben Code, der zweimal ausgeführt wird. Diese Prüfung erfolgt mit geringen Geschwindigkeitskosten.

Wenn es jemals eine Instanz gibt, in der Sie _once suchen, warum das der Fall ist, ist Ihr Code wirklich auf die effizienteste Art und Weise gebaut? Es ist oft besser, die Notwendigkeit zu entfernen, sich auf _once zu verlassen und besseren Code zu produzieren (einfacher gesagt als getan!).

See:

http://forums.digitalpoint.com/showthread.php?t=1693837

http://www.phpbb.com/community/viewtopic.php?f=71&t=565933

http://www.sitepoint.com/forums/showthread.php?t=269085

http://www.quora.com/What-is-the-difference-between-functions-include-and-include_once-in-PHP

3

Die include_once und require_once Funktionen langsamer sind als sind und erfordern, nur weil sie den Überblick über die Dateien behalten das sind schon Bienen n enthalten, damit sie nicht mehrfach enthalten sind.

Aber das sollte überhaupt nicht wichtig sein, da es wahrscheinlich viele Möglichkeiten gibt, Ihre Anwendung zu optimieren, viel effizienter als diese.

+1

Nur um zu verdeutlichen - die 'include_once' und' require_once' Funktionen sind nur langsamer, wenn das Skript * genau * einmal ausgeführt wird. Wenn ein bestimmtes Skript 'foo.php' über' include' eingebunden ist, wird es jedes Mal ausgeführt. Wenn es über 'include_once' eingeschlossen wird, gibt es einen minimalen Geschwindigkeitswert, um zu überprüfen, ob es ausgeführt wurde, aber bei jedem Lauf außer dem ersten wird das Skript nicht ausgeführt. – jvriesem

Verwandte Themen