Allowed memory size of 67108864 bytes exhausted (General)

by hintersatz, Saturday, February 22, 2020, 09:28 (1487 days ago)

Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 24084796 bytes) in /www/htdocs/w012bf96/pfeifenorgelforum.net/forum_archiv/includes/classes/Backup.class.php on line 36

Beim Versuch, ein Backup anzulegen, bekomme ich diese Meldung, was mache ich falsch ?:-)

Avatar

Allowed memory size of 67108864 bytes exhausted

by Auge ⌂, Saturday, February 22, 2020, 10:42 (1487 days ago) @ hintersatz

Hallo

Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 24084796 bytes) in /www/htdocs/w012bf96/pfeifenorgelforum.net/forum_archiv/includes/classes/Backup.class.php on line 36

Beim Versuch, ein Backup anzulegen, bekomme ich diese Meldung, was mache ich falsch ?:-)

Wenn ich ehrlich bin, ich weiß es nicht genau. Ich sehe mir den Code der Backup-Klasse zum allerersten Mal an. Wenn ich dem Code folge, teilt er die Erstellung eines Backups in einzelne Teile, um zu verhindern, dass das sammeln und umwandeln der zu behandelnden Daten das auf dem Server konfigurierte Speicherlimit von PHP sprengt. Aber genau das ist dir laut der Fehlermeldung passiert.

Nun weiß ich natürlich nicht, wie groß dein Forum (bezüglich der Datenmenge) ist und für welche Tabellen du das Backup erstellen wolltest. Wenn du gerade erfolglos ein vollständiges Backup anlegen wolltest, würde ich dir empfehlen, testweise Einzelbackups für jede der Tabellen anzulegen.

Einerseits kann es sein, dass der für die Einzelaufgaben geringere Speicherbedarf dazu führt, dass das Backup erfolgreich ist, andererseits wird, wenn der Speicherbedarf doch zu groß sein sollte, das bei dem/den größten Posten passieren. Damit ließe sich das Problem eingrenzen, da dann die betreffende Tabelle und ihre konkrete Größe bekannt wird.

Wenn du jetzt konkret ein Backup brauchst und auch der Workaround an einzelnen Stellen scheitert, benutze bitte ein Werkzeug wie phpMyAdmin, um das Backup zu erstellen. Üblicherweise haben solche spezialisierten Werkzeuge die ausgereifteren Methoden, um mit einem solchen Problem umzugehen.

Tschö, Auge

--
Trenne niemals Müll, denn er hat nur eine Silbe!

Allowed memory size of 67108864 bytes exhausted

by hintersatz, Saturday, February 22, 2020, 22:09 (1486 days ago) @ Auge

Hallo Auge, bisher war ich es gewohnt, statt einem Update des Skripts eine neue Installation vorzunehmen, und über das Backup dann das Forum wieder zu installieren. Dieser Weg ist jetzt versperrt. Ich werde mal ausprobieren, ob die über das MyPHPAdmin generierte SQL Datei mit dem mit der Backup Funktion des Forums kompatibel ist.
Wenn das nicht funktioniert, dann stehe ich ein kleines bisschen im Regen.
Liebe Grüße und vielen, vielen Dank für eure Bemühung.

Allowed memory size of 67108864 bytes exhausted

by hintersatz, Monday, February 24, 2020, 09:46 (1485 days ago) @ hintersatz

Das Problem beim Backup tritt, wenn ich es teilweise durchführe, beim den Einträgen auf, die übrigen Teil-Backups funktionieren. Mit MyPHPAdmin war ich bislang leider auch nicht erfolgreich, es ist nicht gelungen, ein Kopie des Forums lauffähig zu installieren. Ich werde es dann wohl bei Version 2.3 belassen.
LG

Avatar

Allowed memory size of 67108864 bytes exhausted

by Auge ⌂, Thursday, February 27, 2020, 15:16 (1482 days ago) @ hintersatz

Das Problem beim Backup tritt, wenn ich es teilweise durchführe, beim den Einträgen auf, die übrigen Teil-Backups funktionieren. Mit MyPHPAdmin war ich bislang leider auch nicht erfolgreich, es ist nicht gelungen, ein Kopie des Forums lauffähig zu installieren.

Tja, dann ist dein Forum mit fast sechzigtausend Einträgen einfach zu groß für die Konfiguration deines Webspaces.

Wie schon in jenem Posting geschrieben, bietet phpMyAdmin aber einige Konfigurationsmöglichkeiten, die du dir zunutze machen kannst.

Wenn du dich in phpMyAdmin einloggst, zur Tabelle mlf_entries navigierst und den Reiter "exportieren" öffnest, kannst du da einiges einstellen. Folge bitte den Punkten.

- Exportmethode: Angepasst – zeige alle möglichen Optionen an (sollte selbsterklärend sein)
- Format: SQL
- Datensätze: Alle Datensätze exportieren (damit wirst du eventuell noch herumspielen müssen)
- Ausgabe: Speichere Ausgabe in Datei (Ändere das Template des Dateinamens in einen Namen mit Zähler (zum Beispiel eintraege_1))
- Formatspezifische Optionen: im ersten Abschnitt NUR den Punkt Daten aktiv lassen 
- Datenerstellungsoptionen (Unterpunkt) folgende Checkboxen und Radiobuttons aktivieren
    - TRUNCATE Tabelle vor dem Einfügen
    - Zu verwendende Syntax bei der Dateneingabe: Spaltennamen bei jedem INSERT Schlüsselwort verwenden
    - Binäre Spalten in hexadezimaler Schreibweise exportieren

Lasse einen Export laufen. Wenn dir die Datei (im obigen Beispiel eintraege_1 genannt) zum Download angeboten wird, ist alles gut. Wenn das nicht der Fall ist, kommt jetzt das Spielen mit der Anzahl der Datensätze ins Spiel.

Ändere den Punkt Datensätze: auf Einige Datensätze exportieren und setze den Startwert auf 0 sowie den Endwert auf 10000 (zehntausend). Lasse den Export laufen. Wird dir nun der Download der Datei angeboten, kannst du das annehmen oder den Endpunkt testweise auf 20000 (zwanzigtausend) setzen. Wenn auch das klappt, würde ich den Download nehmen und nun die Exporteinstellungen anpassen.

Neuer Startpunkt wäre nun 10001 und neuer Endpunkt 20000 beziehungsweise der Startpunk wäre 20001 und neuer Endpunkt 40000. Beachte bitte, dass du nun unter Datenerstellungsoptionen unbedingt den Haken bei TRUNCATE Tabelle vor dem Einfügen rausnehmen musst und den Dateinamen auf z.B. eintraege_2 änderst.

So fährst du fort (jeweils neuer Start-und Endpunkt, neuer Dateiname) und erstellst ein Backup der Einträge in mehreren Dateien.

Im Endeffekt wirst du aber um Updates als Updates (und nicht als Neuinstallationen mit folgendem einspielen von Backups) nicht herumkommen. Beginnend mit Version 2.3.5 (auf die du updaten musst, wenn du danach neuere Versionen installieren willst) kommt es immer wieder zu Änderungen an den Strukturen von Datenbank, Tabellen und Spalten, so dass das Einspielen von Backups, die mit älteren Versionen erstellt wurden, scheitern wird.

Ich empfehle, ausgehend von der bei dir installierten Version 2.3.1, folgendes. Erstelle ein Backup deines Forums mithilfe der obigen Anleitung nach der vorübergehenden Deaktivierung des Forums (um zu verhindern, dass es neuere Postings als die im Backup gibt). Installiere die MLF-Version 2.3.5 in einem neuen Verzeichnis mit neuen Datenbanktabellen und spiele das Backup mit phpMyAdmin zurück. Passe in den Settings den Wert für forum_address an den Verzeichnisnamen der Neuinstallation an.

Das alte Forum bleibt derweil vorhanden aber deaktiviert, damit bis zum Abschluss der Arbeiten keine neuen Benutzer oder Postings hinzukommen, die nicht Bestandteil des Backups waren.

Führe in der neuen, bislang inaktiven Installation nun nacheinander die Updates auf die Versionen 2.3.7, 2.4.0 und 2.4.20 aus, ohne neue Backups anzulegen und einzuspielen. Benutze also bitte, das sei ausdrücklich gesagt, die Updatefunktion über die Dateien update_2.x-2.3.php (bis Version 2.3.7) und danach update_2.3.5-2.4.php für die Updates, um die Änderungen der Datebankstruktur auch an den vorhendenen Datensätzen zu vollziehen.

Wenn die Updates erfolgreich durchgelaufen sind, benenne das Verzeichnis des alten und des neuen Forums um, damit alle vorhandenen Links auf das (jetzt alte) Forum nun auf das neue Forum zeigen. Prüfe vorsichtshalber die Settings, insbesondere forum_address und home_linkaddress.

Wenn sich die Benutzer anmelden und posten können, also alle Funktionen gegeben sind, kannst du die alte Installation und die dazugehörigen Datenbanktabellen löschen.

Wenn das Procedere nicht von Erfolg gekrönt ist, schalte das alte Forum wieder ein und frage hier noch einmal nach.

Ich werde es dann wohl bei Version 2.3 belassen.

Das halte ich für keine gute Idee. Nicht nur, dass in der aktuellen Version 2.4.20 gegenüber deiner Version 2.3.1 diverse Sicherheitslücken und Fehler behoben wurden, es sind da auch reichlich neue Funktionen hinzugekommen, die du und dein Publikum so nicht nutzen können.

Tschö, Auge

--
Trenne niemals Müll, denn er hat nur eine Silbe!

Avatar

Allowed memory size of 67108864 bytes exhausted

by Auge ⌂, Thursday, February 27, 2020, 13:50 (1482 days ago) @ hintersatz

Hallo

bisher war ich es gewohnt, statt einem Update des Skripts eine neue Installation vorzunehmen, und über das Backup dann das Forum wieder zu installieren. Dieser Weg ist jetzt versperrt. Ich werde mal ausprobieren, ob die über das MyPHPAdmin generierte SQL Datei mit dem mit der Backup Funktion des Forums kompatibel ist.

Gundsätzlich fertigt das foreneigene Backupskript (wenn gewünscht pro Tabelle) eine Textdatei mit [edit]der Anweisung die vorhandene Tabelle zu leeren und folgend[/edit] einem Stapel von INSERT-Anweisungen mit den einzelnen Datensätzen an [1]. Beim wiedereinspielen eines Backups müssen die Tabellen in der alten oder in einer neuen Datenbank schon existieren.

Die Backupfunktion von phpMyAdmin erlaubt und erfordert es, den Umfang des Backups zu konfigurieren. Dazu gehört auch, festzulegen, ob in die Backupdatei die Anweisungen zum erstellen der Tabellen (CREATE …) geschrieben werden oder nicht. Konfiguriert man die CREATE-Anweisungen weg, bleiben die INSERT-Anweisungen für die Datensätze übrig, ganz so, wie es auch das foreneigene Skript macht.

Tschö, Auge

[1]: siehe functions.inc.php in Version 2.4.20, Funktion create_backup_file ab Zeile 1733

--
Trenne niemals Müll, denn er hat nur eine Silbe!

RSS Feed of thread