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....
Lesezeichen