Seite 1 von 1

DB Optimize "phpbb3 - Cronjob"

Verfasst: 04.03.2009 21:00
von markus giersch
Hy, ich bin heute endlich dahinter gekommen wie ich unser Forum stabil halten kann.
Die Idee dazu bekam ich in diesem Thema:

- http://www.phpbb.de/community/viewtopic ... 6&t=130831

Eigentlich müsste phpbb3 sowas standartmäßig drinne haben, denn es ist ja bekannt das zu große Überhänge das Forum "killen". Nun gut, ich habe heute bei uns im Forum einen "Not-Knopf" (aus Sicherheit leider erstmal nur für Admins) eingebaut.Wenn man da drauf klicht wird eine php Datei ausgeführt die den Cronjob auch Manuell ausführt (eigentlich führt der Cronjob auch nur die PHP Datei in verschiedenen intervalen aus). Und siehe da, nach der Ausführung läuft das Forum.

Dadurch kam ich auf diese Idee

Es geht um diese Datei

zb optimize.php

Code: Alles auswählen

<?php
mysql_connect('localhost', 'benutzername', 'passwort');
mysql_select_db('db_name');

mysql_query("OPTIMIZE TABLE phpbb_tabelle");
mysql_query("OPTIMIZE TABLE phpbb_tabelle2");
usw...

mysql_close();
?>
Jetzt ist die Frage, wie bekomme ich es hin, das keiner die Inhalte/Datei kopieren oder einsehen kann, aber trotzdem die Anwendung ausführen kann? Wenn das möglich ist, kann man das auch außerhalb des "Adminbereichs" realisieren.

Das non plus ultra wäre jedoch wenn phpbb3 die Tabellen der DB selber ausliest und anschliesend in das Scribt oben einfügt. Das sollte ja möglich sein, denn beim DB Backup gehts ja auch ;-)
Als zweites non plus Ultra sollte der Board admin vieleicht die Möglichkeit haben diese Funktion "an" oder " aus" zu schalten. Und noch besser wäre es, wenn diese Funktion sogar mit der Uhrzeitfunktion des Forums resyncronisiert wird und somit intervale eingeben werden können, in dem das Scrippt automatisch ausgeführt wird.
Aus Sicherheitsgründen solltre man diese Funktion so programmieren, das sie nicht zwei mal paralel oder 10 mal hintereinder gedrückt werden kann, denn das zerschiest ja auch die DB. Sozusagen ein sperrre rein hauen.

Leider bin ich kein phpbb3 Profi und kenne die ganzen Präfixe und SQL Befehle nicht.
Aber die Idee habe ich ;-) Und es geht ja

Re: DB Optimize "phpbb3 - Cronjob"

Verfasst: 05.03.2009 15:07
von markus giersch
Öffne eine leere Datei (die nennen wir nachher "optimize.php") und füge ein:
<?php
mysql_connect('localhost', 'benutzername', 'passwort');
mysql_select_db('db_name');

mysql_query("OPTIMIZE TABLE phpbb_tabelle");
mysql_query("OPTIMIZE TABLE phpbb_tabelle2");
usw...

mysql_close();
?>
Füge in 'localhost', 'benutzername' und 'passwort' die entsprechenden Zugangsdaten der Datenbank ein.
Um eine Optimierung der Datenbank durch führen zu können muss man die entsprechenden Tabellen die man optimieren will in den Rot Markierten Bereich einfügen.
Man kann die Tabellen der Datenbank im "Adminbereich" des Forums sehen unter "Backup" oder Alternativ in "phpmyAdmin". Man kann alle Tabellen des Forums oben in das Script einfügen, oder nur bestimmt. Je mehr Tabellen man optimieren möchte, desto länger wird auch die Liste.
Wenn man die Liste erstellt hat löscht man am Ende natürlich noch das "usw.." :lol:

Speichere diese Datei unter "adm/optimize.php"

Setze die optimize.php auf
chmod 711

Öffne root/adm/overall_footer.php
finde

Code: Alles auswählen

			{DEBUG_OUTPUT}
		<!-- ENDIF -->
füge danachauf einer neuen Zeile ein:

Code: Alles auswählen

<br><br><a href="adm/optimize.php" target="blanc">Datenbank Optimierung - jetzt!</a><br>
Speichern

Fertig.

Jetzt habt Ihr im Admin bereich ganz unten "Datenbank Optimierung - jetzt!" stehen.
Wenn Ihr dann drauf klickt sollten die Datenbanken die Ihr oben ins Scrippt eingegeben habt optimiert werden.

Falls euer Hoster es zulässt könnt Ihr die "adm/optimize.php" auch als "Cronjob" benutzen.

PS: Wartet bitte mit dem einbau dieses Snippets bis ein Moderator dieses Forums sagt das es OK ist!
Ich bin wie gesagt kein Profi und weis nicht ob dadurch irgendwas schief geht.

Re: DB Optimize "phpbb3 - Cronjob"

Verfasst: 05.03.2009 15:29
von oxpus
Mal eine bescheidene Frage, Markus:
Warum nicht MySQLDumper einsetzen, darüber per täglichen Cronjob die Datenbank sichern und zeitgleich (ist dabei einstellbar) die Tabellen vorher alle optimieren?
Geht viel bequemer, als ein neues Script zu schreiben und dabei wird auch gleich ein Backup angelegt...

Re: DB Optimize "phpbb3 - Cronjob"

Verfasst: 05.03.2009 15:46
von markus giersch
Es geht auch darum es als Cronjobfunktion des Servers zu benutzen.
Dann braucht man kein weiteres Programm.
Ich zB. habe keim mysql. Wozu sollte ich es mir holen?
Und jedesmal in phpmyadmin zu gehen ist auch nervig.

Und das DB Backup kann ich genauso im phpbb3 ausführen.

Das Snippet ist ja auch noch nicht ganz fertig. Ich will ja noch die Funktion einbauen das es vom Forum aus in gleichmäßigen intervalen ausgeführt wird. Sollte phpbb3 eigentlich standartmäßig drinne haben.

Ist doch schön wenn man alles mit phpbb3 machen kann, wozu noch zig andere Programme ;-)

Re: DB Optimize "phpbb3 - Cronjob"

Verfasst: 05.03.2009 18:32
von oxpus
Und Du meinst, eine Datenbanksicherung über das phpBB 3 ist vernünftig?
Mysqldumper wurde genau dafür gemacht und kann bequem neben dem eigentlichen Backup auch halt u. a. die Datenbank optimieren.
Und es wird auch auf Wunsch jede Datenbank von Dir auf einmal gesichert.
Bequemer geht es wirklich nicht.
Ich sehe aus meiner Sicht daher eher keinen Anlass, für eine Optimierung der Tabellen ein eigenes Script zu verfassen, wenn man neben diesem Wunsch auch gleich die Datenbank automatisch sichern kann.
Oder wie erstellst Du Backups Deiner Datenbank? Manuell?!?!?!?

Aber jeder wie er meint, war nur ein Vorschlag, halt Nützliches mit dem hier vorgetragenen Wunsch kombinieren zu können und damit halt gleich 2 Fliegen mit einer Klappe zu erschlagen...

Re: DB Optimize "phpbb3 - Cronjob"

Verfasst: 05.03.2009 21:08
von markus giersch
Ist ja klar das das nur eine zusatzfunktion ist.
Ich sage ja nicht das du nicht auch recht hast.
Aber kann man mit msqldumper in intervalen ein DB backup durchführen?
oxpus hat geschrieben:Oder wie erstellst Du Backups Deiner Datenbank? Manuell?!?!?!?
Ja, dafür ist die Funktion des Forums ja da ;-)
Ich mache ca. alle 100 Beiträge ein Backup.

Nun gut. Wie gesagt, soll ja nur ein ZUSATZFUNKTION sein.
Ich drücke jetzt zB. nur auf einen Knopf im Forum wenn es hängt, und schon läufts wieder.
Ich muss nichts weiter machen als diesen Knopf drücken. *für die ganz bequemen halt*

Abgesehen davon frage ich mich warum phpbb3 das nicht standartmäßig drinne hat.
Ich meine es ist doch bekannt das zu grpße Überhänge das Forum plätten. Und ein Laie hat keine Ahnung wie er das bewerkstelligen soll. Wenn ich es hin bekommen sollte dieses Snippet so hin zu biegen das es ab einer gewissen größe bei den Überhängen automatisch startet, so hat das phpbb3 Forum dann eine wirklich sehr gute Funktion die das Forum super Serverfreundlich macht. Ich merke es doch momentan selber. Vorher ist das Forum regelmäßig abgekratzt, jetzt nichts mehr (läuft bei mir bereits als Cronjob). Es rennt nonstop, Auch bei 50 Zugriffen in der gleichen Sekunde ohne danach zu haken ;-)

Re: DB Optimize "phpbb3 - Cronjob"

Verfasst: 06.03.2009 00:09
von oxpus
Also dass Überhänge in der Datenbank das Forum plätten ist eher nur bei wirklich sehr schwachen Servern bemerkbar.
Ich habe teilweise innerhalb meiner Backup-Zyklen (alle 24 Stunden) über 50 MB Überhang in der Datenbank und merke im Forum nichts davon.
So sollte es ja auch sein, da die Optimierung der Datenbanktabellen in der Regel eher nur Platz sparen, als dass die wirklich beschleunigen (regelmässig angewendet).
Der Dumper (als Mysqldumper) macht dazu ein Backup je nach zeitlicher Einstellung des betreffenden Cronjobs.
Und bequemer kann man nicht sichern, als über einen Cronjob mit dem Dumper. Manuell wäre mir der Aufwand viel zu hoch, ja gar viel zu zeitintensiv bei über 200 MB Datenbankgrösse mit ständig steigendem Volumen (alls DB's bei mir zusammengerechnet)...
Ich sehe auch daher eher keine Notwendigkeit, warum das phpBB 3 selber diese Funktion anbieten sollte, kann es doch schliesslich nicht wirklich was für Überhänge in der Datenbank...