Wie vermeide ich den Fehler "nicht genügend Speicher"?

7

Ich arbeite derzeit mit Drupal 7 und habe die folgenden Module installiert, die alle auf die jeweils letzte Version aktualisiert wurden:

  • Aufrufe - 7.x-3.0-beta3
  • CTools - 7.x-1.0-alpha4
  • Panels - 7.x-3.0-alpha3
  • Regeln, ACL, Erweitertes Forum, Forumzugriff, Benutzerpunkte, BUEditor

Ich erhalte immer wieder "PHP Fatal Error: Nicht genügend Speicher". Das von meinem Provider maximal zulässige Limit meines Servers (32 MB). Diese Fehler treten hauptsächlich bei der Interaktion mit der Modulseite auf, aber auch bei jedem Benutzer, der versucht, sein Kennwort zu erneuern oder Knoten zu bearbeiten.

Hätten Sie also einen Rat, wie Sie die Speichernutzung senken können?

PS: Ich habe festgestellt, dass die meisten dieser Fehler Ansichten und Ansichten Plugins .inc-Dateien enthalten. Es geht aber auch um .inc-Dateien aus den Kernmodulen und dem System ... Ich könnte dort einige kopieren, wenn Sie dies wünschen.

Nyoz
quelle

Antworten:

6

In diesem Fall können Sie wirklich nicht viel tun. Drupal 7 benötigt einiges an Speicherplatz, ebenso wie Ansichten, Panels usw.

Wenn ein Upgrade auf einen Hosting-Plan mit mindestens 128 MB nicht möglich ist, würde ich zumindest sicherstellen, dass die folgenden Module deaktiviert bleiben:

  • Update Manager
  • Datenbankprotokollierung
  • Feld Benutzeroberfläche
  • Ansichten Benutzeroberfläche
  • In-Place-Editor für Bedienfelder
  • Jedes andere "UI" -Modul

Führen Sie Ihre Entwicklung lokal durch und aktualisieren Sie Ihre Produktionsbox mithilfe der Versionskontrolle und der Funktionen .

Alex Weber
quelle
2
Beachten Sie, dass die Benutzeroberfläche für Ansichten nur erforderlich ist, wenn Sie eine vorhandene Ansicht bearbeiten oder eine neue Ansicht hinzufügen. Für die normale Verwendung ist die Benutzeroberfläche für Ansichten nicht erforderlich, und Ansichten funktionieren normal, auch wenn dieses Modul deaktiviert ist.
Kiamlaluno
1
Genau das gleiche gilt für alle anderen "UI" -Module. Sie sind nur für die Entwicklung notwendig. Felder funktionieren ohne die Benutzeroberfläche, ebenso wie der Kontext usw.
Alex Weber
4
Ansichten (nicht die Benutzeroberfläche) selbst haben derzeit jedoch einen enormen Platzbedarf. Ich habe kürzlich versucht, den Speicherbedarf von Drupal zu bekämpfen, und festgestellt, dass Ansichten sowohl den Schema-Cache als auch den eigenen Daten-Cache auf jeder Seite laden, auf der eine Ansicht angezeigt wird. Das kann leicht mehrere Megabyte an einem Standort mit wenigen installierten Modulen bedeuten (ca. 4 MB bei meiner Testinstallation).
Berdir
Ich muss Ihrer Empfehlung zur Verwendung von Funktionen nicht zustimmen - dieses Modul ist ein riesiger Speicherfresser. Sie sollten Update-Hooks viel besser verwenden, um Konfigurationsänderungen bereitzustellen.
Felix Eve
Anekdotischerweise habe ich nach dem Einrichten einer vorhandenen D7-Site auf Shared Hosting und dem Auftreten vieler Speicherprobleme mithilfe von Ansichten festgestellt, dass das Ändern der PHP-Version von 7 auf 5.6 sehr hilfreich war. Ich bin mir der Ursache nicht sicher, aber ich hatte den Punkt erreicht, 1024 MB Speicher zuzulassen, und es ging immer noch zur Neige, während 16 Elemente in einer Ansicht angezeigt wurden.
Jammypeach
4

Wie in den Systemanforderungen von Drupal aufgeführt , benötigt Drupal Core selbst 32 MB, um ausgeführt zu werden. Das Hinzufügen von Modulen ohne Erhöhung des Arbeitsspeichers ist eine todsichere Möglichkeit, diesen Fehler zu beheben.

Wenn das Maximum Ihres Servers nur 32 Millionen beträgt, ist es Zeit, neues Hosting zu erhalten.

tim.plunkett
quelle
Das Schlimme ist, dass ich es gerade geändert habe ... Ich glaube, ich bleibe mindestens ein Jahr dabei ... Ich muss das überprüfen. :(
Nyoz
Übrigens, mein Gastgeber ist 1 & 1 Frankreich. Ich habe in einigen WordPress-Support-Foren gelesen, dass sie kürzlich ihr PHP-Limit auf 90 MB aktualisiert haben. Ich rufe sie am Montag an ...! ;)
Nyoz
2

Wie bereits erwähnt, benötigen Sie unter dem Strich realistisch 128 Millionen. Ein weiterer wichtiger Punkt ist, dass wenn die Image-Suite funktioniert, dies uns häufig (zumindest in Drupal 6) daran erinnert, dass unter bestimmten Umständen mindestens 96 MB erforderlich sind.

32M wird es einfach nicht schaffen.

NikLP
quelle
0

Ich denke, die Verwendung des Views-Moduls ist Ihr größtes Problem.

Schreiben Sie alle Seiten, die Ansichten verwenden, mit benutzerdefinierten Abfragen neu, entfernen Sie das Ansichtsmodul und entfernen Sie währenddessen auch Regeln (verschieben Sie erneut die gesamte Logik in Code), und Ihre Speichernutzung wird sofort reduziert.

Wenn Sie nur Vorlagendateien schreiben und Preprocess-Hooks verwenden, müssen Sie keine Panels mehr speichern, um noch mehr Speicherplatz zu sparen.

Dies sind keine einfachen oder schnellen Schritte, die genaue Kenntnisse von Drupal, MySql und PHP erfordern. Wenn jedoch die Leistung oberste Priorität hat, ist dies die beste Lösung (und wird auf 32 MB Arbeitsspeicher ausgeführt).

Felix Eve
quelle