Ergebnis 1 bis 6 von 6

Thema: Tabellen reparieren/optimieren per "zeitgesteuerter Aufgabe" möglich?

  1. #1
    vB-Guru Avatar von Jaydee
    Registriert seit
    29.05.2008
    Ort
    ...tief im Westen....
    Alter
    50
    Beiträge
    7.791

    Frage Tabellen reparieren/optimieren per "zeitgesteuerter Aufgabe" möglich?

    Hallo zusammen,

    heute habe ich auch mal wieder eine Frage:
    Da ich auf einer größeren Plattform die DB-Tabellen regelmäßig repariere/optimiere, würde ich diese Aufgabe gerne etwas über das ACP automatisieren (z.B. wöchentliche Ausführung oder so).

    Kennt Ihr eine Möglichkeit, per "Aufgabe" (also nicht Cronjob auf dem Server) alle Tabellen auszuwählen, die Optionen "Tabellen optimieren /Tabellen reparieren" zu markieren um dann repair.php?do=dorepair ausführen zu lassen?

    Die PHP könnte ich ja aufrufen lassen, aber damit wären die Tabellen und Funktionen ja noch nicht markiert.
    Fällt da Jemandem evtl. eine Lösung ein?
    Es gab da zwar mal ein Script für 3.0.x, welches man manuell ausführen konnte was aber zu Problemen und Fehlermeldungen führte. Das möchte ich eigentlich ungerne bei 3.7.3 verwenden zumal es diese Funktion ja nun auch im ACP gibt.

    Vielen Dank schon mal vorab.
    Liebe Grüße
    Jörg


    Spezifische Fragen zum MySQLDumper bitte nicht hier, sondern im MSD-Support-Forum stellen.
    Aktuell verfügbare Version: MSD 1.24.4

    Die deutsche Rechtschreibung ist Freeware. Das heißt, Du kannst sie kostenlos nutzen.
    Allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.



  2. #2
    vB-Guru Avatar von Christian
    Registriert seit
    07.06.2003
    Ort
    In Spocks Quartier
    Alter
    34
    Beiträge
    3.032
    Dieses Skript macht das unter anderem: http://www.vbulletin-germany.com/for...ghlight=Backup
    Suchst du ein vBulletin CMS? vBCMS (Jetzt neu inkl. Shopsystem)
    Oder brauchst du ein professionelles vBulletin Style? vBulletin Styles

  3. #3
    vB-Guru Avatar von Jaydee
    Registriert seit
    29.05.2008
    Ort
    ...tief im Westen....
    Alter
    50
    Beiträge
    7.791
    Hallo Christian,

    danke Dir für die schnelle Antwort.
    Telnet/SSH Zugang ist dort aber leider nicht vorhanden und auch eine Backup-Funktion ist in dem Fall nicht nötig (ist dort bereits automatisiert).

    Ich würde es gerne (falls möglich), direkt in die "Pseudo-Cronjobs" des ACP einbinden und auch darüber das Zeitintervall vorgeben.
    Liebe Grüße
    Jörg


    Spezifische Fragen zum MySQLDumper bitte nicht hier, sondern im MSD-Support-Forum stellen.
    Aktuell verfügbare Version: MSD 1.24.4

    Die deutsche Rechtschreibung ist Freeware. Das heißt, Du kannst sie kostenlos nutzen.
    Allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.



  4. #4
    vB-Guru Avatar von Jaydee
    Registriert seit
    29.05.2008
    Ort
    ...tief im Westen....
    Alter
    50
    Beiträge
    7.791
    Ok, ich kram den Thread noch mal hervor, durch den "Lösungsmangel" hier habe ich gestern nochmals selber einige Zeit gebastelt und mit folgendem Script nun Erfolg:

    PHP-Code:

    <HTML> 
    <HEAD> 
    <TITLE></TITLE> 
    <style> 
    body,table{ 
    font-size: 10px; 
    font-family: Arial; 

     
    .border{ 
    border-width: 1px; 
    border-style: solid; 
    border-color: #000000; 

     
    tr.header{ 
    background-color: #F8F5B6; 

    </style> 
    </HEAD> 
    <BODY> 
    <?php 
    $host 
    "localhost"
    $user "USERNAME"
    $pass "PASSWORT"
    $dbase "DATENBANKNAME"
    $db mysql_connect($host$user$pass) or die ("verbindung fehlgeschlagen"); 
    mysql_select_db($dbase$db) or die ("verbindung zur datenbank fehlgeschlagen"); 
    $sql "show tables"
    $r_sql mysql_query($sql,$db); 
    if(
    $r_sql){ 
    echo 
    "<table cellspacing=\"0\" cellpadding=\"0\" width=\"80%\" align=\"center\" class=\"border\"><tr><td>\n"
    echo 
    "<table cellspacing=\"0\" cellpadding=\"2\" width=\"100%\" align=\"center\" >\n"
    echo 
    "<tr class=\"header\"><td>Tabelle</td><td>Operation</td><td>Status</td><td>Operation</td><td>Status</td></tr>\n"
    while(
    $table mysql_fetch_row($r_sql)){ 
    $sql_o "optimize table ".$table[0]; 
    $r_sqlo mysql_query($sql_o,$db); 
    $sql_c "check table ".$table[0]." medium"
    $r_sql_c mysql_query($sql_c,$db); 
    if(
    $r_sqlo){ 
    $msg_o mysql_fetch_array($r_sqlo); 
    $msg_c mysql_fetch_array($r_sql_c); 
    if(
    $msg_o['Msg_text'] == "Table is already up to date"){ $color "#CAF9AE"; } 
    if(
    $msg_o['Msg_text'] == "OK"){ $color "#63EB66"; } 
    if(
    $msg_o['Msg_text'] == "The handler for the table doesn't support check/repair"){ $color "#F21C1C"; } 
    echo 
    "<tr bgcolor=\"".$color."\"><td width=\"20%\" nowrap>".$table[0]."</td><td width=\"20%\" nowrap>".$msg_c[Op]."</td><td width=\"20%\" nowrap>".$msg_c[Msg_text]."</td><td width=\"20%\" nowrap>".$msg_o[Op]."</td><td width=\"20%\" nowrap>".$msg_o[Msg_text]."</td></tr>\n"


    echo 
    "</table>\n"

    ?> 
    </BODY> 
    </HTML>
    Der Bereich:
    $host = "localhost";
    $user = "USERNAME";
    $pass = "PASSWORT";
    $dbase = "DATENBANKNAME";

    muß natürlich mit den jeweiligen DB-Daten ersetzt werden.
    Der Rest kann so übernommen werden oder auch Farben noch verändert werden etc.
    Das Script dann z.B. als db_optimize.php oder wie auch immer speichern, es lässt sich sowohl manuell über die Domain (dann möglichst in einem geschützten Verzeichnis) aufrufen als auch per Cronjob/zeitgesteuerte Aufgabe im ACP.
    Evtl. kann das ja Jemand ebenfalls gebrauchen, für größere Datenbanken und große Userzahlen ist das ganz nützlich. Ansonsten habe ich noch ein Script, mit dem man einzelne Tabellen vorgeben kann.

    Klappt nun alles hervorragend, nur ein kleines Problem habe ich noch..vllt. könnt Ihr das bestätigen:

    Nicht nur bei diesem, sondern bei ALLEN selbst erstellten Cronjobs unter vB werden diese nicht im "Log der Aufgaben" aufgeführt, obwohl Phrasen vergeben wurden und das Häkchen bei "Log" gesetzt wurde!
    Alle vB-eigenen Aufgaben erscheinen dort aber.
    Diese Phrasen beginnen alle mit "task_xxx_log" und nach dem Schema habe ich auch meine eigenen angelegt. Trotzdem erscheinen sie nicht.

    Die Admin-Hilfe erzählt da nur etwas von:
    Hierzu wird der Aufruf log_cron_action() mit der Zahl 1 als dritter Parameter benötigt. Ansonsten wird der im Beschreibungsfeld hinterlegte Wert genutzt.
    ..was nicht wirklich weiter hilft. Warum der "Action-Aufruf" ? Ist doch für die anderen Aufgaben auch nicht nötig bzw. passiert automatisch...woher bekomme ich denn diesen Paramter? Die wenigsten Log-Phrasen haben einen Parameter, und wenn dann betrifft der nur User ( {1} ).

    Hat Jemand eine Idee, wie ich eigene Cronjobs doch noch in das Log bekomme?
    Oder ist das ein genereller Bug des vB 3.7.x ?
    Es klappt wie gesagt nur bei den "werkseitigen", bei eigenen weder manuell ausgelöst noch zeitgesteuert.
    Sie werden schlicht im Log ignoriert, egal ob man das Häkchen setzt oder nicht....
    Liebe Grüße
    Jörg


    Spezifische Fragen zum MySQLDumper bitte nicht hier, sondern im MSD-Support-Forum stellen.
    Aktuell verfügbare Version: MSD 1.24.4

    Die deutsche Rechtschreibung ist Freeware. Das heißt, Du kannst sie kostenlos nutzen.
    Allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.



  5. #5
    vBulletin-Germany Team Avatar von StGaensler
    Registriert seit
    04.11.2004
    Ort
    München
    Beiträge
    12.298
    Blog-Einträge
    1
    Hallo,

    auch bei den anderen Cronjobs wird der Logeintrag "manuell" über den Funktionsaufruf geschrieben, schau sie dir doch einfach an.

    Vielleicht hilft dir die Dokumentation der entsprechenden Funktion weiter:
    PHP-Code:
    // ###################### Start log_cron_action #######################
    // description = action that was performed
    // $nextitem is an array containing the information for this cronjob
    // $phrased is set to true if this action is phrased
    function log_cron_action($description$nextitem$phrased 0
    Viele Grüße

    Stefan

  6. #6
    vB-Guru Avatar von Jaydee
    Registriert seit
    29.05.2008
    Ort
    ...tief im Westen....
    Alter
    50
    Beiträge
    7.791
    Hallo Stefan,

    danke Dir, das hat mich zumindest auf die richtige Spur gebracht. Abhängig vom jeweiligen Job muß tatsächlich die (angepasste) Anweisung mit in das Script, also in meinem Falle wäre das:

    PHP-Code:
    log_cron_action(''$nextitem1); 
    Damit funktionierts nun tadellos, auch bei manuellem Aufruf des Job's.
    Liebe Grüße
    Jörg


    Spezifische Fragen zum MySQLDumper bitte nicht hier, sondern im MSD-Support-Forum stellen.
    Aktuell verfügbare Version: MSD 1.24.4

    Die deutsche Rechtschreibung ist Freeware. Das heißt, Du kannst sie kostenlos nutzen.
    Allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.



Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. mailversand geht schief
    Von ragtek im Forum vBulletin 3.6 Fragen und Probleme
    Antworten: 6
    Letzter Beitrag: 22.05.2007, 22:01
  2. [vB 3.0.0 Beta 3] Tabellen optimieren per Task Manager
    Von MrNase im Forum vB2 Hack-Veröffentlichungen
    Antworten: 1
    Letzter Beitrag: 15.06.2003, 20:51

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •