Die Frage könnte einige Leute veranlassen, fast sofort ein JA oder NEIN zu sagen, aber bitte lesen Sie weiter ...
Ich habe eine einfache Website, wo es 30 PHP-Seiten gibt (jede hat PHP-Server-Seitencode + HTML / CSS usw.). Keine komplizierte Hierarchie, nichts. Nur 30 Seiten.
Ich habe auch eine Reihe von reinen Back-End-PHP-Dateien - diejenigen, die Code zum Speichern von Sachen in der Datenbank, Authentifizierung, Senden von E-Mails, Verarbeitung von Bestellungen und dergleichen haben. Diese werden von diesen 30 Inhaltsseiten wiederverwendet.
Ich habe eine Master-PHP-Datei, an die ich einen Parameter sende. Dies gibt an, welche dieser 30 Dateien benötigt wird und enthält die entsprechende Inhaltsseite. Für jede dieser Dateien ist jedoch möglicherweise eine variable Anzahl von Backend-Dateien erforderlich. Zum Beispiel benötigt eine Inhaltsseite möglicherweise nichts vom Backend, während ein anderer den Datenbankcode benötigt, während etwas anderes den E-Mail-Server, die Datenbank und den Authentifizierungscode usw. benötigt.
Ich denke, welche Back-End-Seite benötigt wird, kann in der entsprechenden Inhaltsseite enthalten sein, aber eine kleine Änderung im Pfad und ich muss Dutzende von Dateien bearbeiten. Es wird zu umständlich sein, zu überprüfen, welche Content-Seite angefordert wird (switch-case-Typ der Sache) und die entsprechenden Back-End-Dateien in die Master-php-Datei aufzunehmen. Auch hier muss ich viele Änderungen vornehmen, wenn sich ein einzelner Pfad ändert.
Da ich faul bin, habe ich ALLE Back-End-Dateien in die Master-Datei aufgenommen, so dass keine Inhaltsseite etwas anfordern kann, das nicht enthalten ist.
Erste Frage - ist das eine gute Praxis? wenn es von irgendjemandem gemacht wird.
Zweitens, gibt es ein Leistungsproblem oder irgendeine Art von Problem wegen mir einschließlich aller Back-End-Dateien unabhängig davon, ob sie benötigt werden?
BEARBEITEN
Die Website erreicht irgendwo zwischen 3000 - 4000 Besuche pro Tag.
Sie sollten einen Benchmark erstellen. Zeit die Ausführung derselben Seite mit verschiedenen Includes. Aber ich denke, es wird mit 30 Dateien keinen großen Unterschied machen.
Aber Sie können sich die Zeit sparen und einfach APC in der php.ini aktivieren (ist es eine PECL-Erweiterung, also müssen Sie installieren es). Es wird den geparsten Inhalt Ihrer Dateien zwischenspeichern, was die Dinge erheblich beschleunigen wird.
Übrigens: Es gibt nichts Falsches an der Faulheit, es ist sogar eine Tugend ;)
Wenn Ihre Site objektorientiert ist, würde ich das automatische Laden empfehlen ( Ссылка ).
Dies verwendet eine magische Methode (__autoload), um nach einer Klasse zu suchen, wenn sie benötigt wird (sie ist faul, genau wie du!). Wenn also eine bestimmte Seite nicht alle Klassen benötigt, braucht sie sie nicht zu bekommen!
Das wiederum hängt davon ab, ob es objektorientiert ist oder nicht ...
Es wird Ihre Seite verlangsamen, obwohl wahrscheinlich nicht um einen bemerkenswerten Betrag. Es scheint jedoch keine gesunde Art zu sein, Ihre Anwendung zu organisieren. Ich würde es überdenken. Versuchen Sie, die Anwendungslogik (z. B. den größten Teil des serverseitigen Codes) von der Präsentationsebene (z. B. HTML / CSS) zu trennen.
Es ist keine schlechte Übung, wenn die Dateien klein sind und nur Definition und Einstellungen enthalten. Wenn sie Code ausführen oder extrem groß sind, führt dies zu einem Leistungsproblem. jetzt - wenn Ihre Website 3 Besucher pro Stunde hat - wen interessierts, wenn Sie 30000 haben ... das ist ein anderes Problem, und Sie müssen härter arbeiten, um das zu minimieren.
In Anbetracht der Größe Ihrer Website; Wenn Sie eine Verlangsamung nicht bemerkt haben, warum versuchen Sie es zu beheben?
Wenn es um größere Sites geht, sollten Sie als erstes APC installieren. Auch wenn Ihre aktuelle Methode zum Einbinden von Dateien von APC nicht so stark profitiert, wie es könnte, wird APC dennoch eine erstaunliche Arbeit leisten, um die Dinge zu beschleunigen.
Wenn die Reaktionsgeschwindigkeit immer noch problematisch ist, sollten Sie alle Dateien berücksichtigen. APC behält eine zwischengespeicherte Version Ihrer Quelldateien im Speicher, kann dies jedoch nur gut tun, wenn keine bedingten Includes vorhanden sind.
Nur wenn Ihre PHP-Anwendung in einer Größe ist, in der die Erschöpfung des Speichers ein großes Risiko darstellt (beachten Sie, dass Speicher für die meisten großen Websites nicht der Flaschenhals ist), können Sie Teile Ihrer Anwendung bedingt einschließen.
Rasmus Lerdorf (der Mann hinter PHP) stimmt zu: Ссылка
Wie andere gesagt haben, sollte es die Dinge nicht sehr verlangsamen, aber es ist nicht "ideal".
Wenn das Hauptproblem darin besteht, dass Sie zu faul sind, die Pfade für alle enthaltenen Dateien zu ändern (wenn der Pfad jemals in Zukunft aktualisiert werden muss). Dann können Sie eine Konstante verwenden, um den Pfad in Ihrer Hauptdatei zu definieren, und die Konstante immer dann verwenden, wenn Sie eine Datei hinzufügen / hinzufügen müssen.
%Vor%Auf diese Weise müssen Sie, wenn sich der Pfad ändert, nur eine Codezeile ändern.
Ich lebe mit "so wenig wie möglich, so viel wie nötig", also schließe ich normalerweise nur meine Config- und Session-Behandlung für alles ein und dann enthält jede Seite genau das, was sie brauchen, indem sie einen Include-Pfad im Config-Include verwenden Für Pfadänderungen müssen Sie nur noch eine Datei ändern.
Wenn Sie alles einschließen, wird die Verlangsamung erst bemerkbar sein, wenn Sie viele Seitentreffer (mehrere Treffer pro Sekunde) haben, also könnte in Ihrem Fall alles in Ordnung sein.