[2.3] Großbaustelle - index.php

Gucky

[inaktiv]
Für wBB-Version(en):
Beschreibung:

Schönen guten Abend :),

ich hab vor einiger Zeit im Woltlab Forum nen schönen codeschnipsel entdeckt der ein tägliches Backup der DB macht und die Tabellen optimiert und repariert.
Nach vielem suchen in div. Foren hab ich noch ein automatisches öffnen/schließen reinbasteln können.
Funktioniert auch eigentlich alles wunderbar :yes: , der einzige haken dabei ist das man nur Zeitdifferenzen angeben kann nach denen die scripte ausgeführt werden, und dadurch kann sich das ganze schnell um ein paar stündchen verschieben wenn grad kein user online ist. Für die Datenbanksachen ist das relativ egal aber wenn man ein Thema bspw. gern täglich um 22 uhr geöffnet hätte ist das so nicht wirklich zu gebrauchen :-/

Nächster Punkt im Umbau ist das mit der index.php nicht mehr die Forenübersicht aufgerufen wird sondern bspw. ein Portal oder eine Homeseite.
Dafür muß die index.php erstmal umbenannt werden. Als Dateinamen bieten sich da forum.php oder main.php an...
Die datei mit einem editor öffnen und $filename = 'index.php'; entsprechend eurer Wahl abändern.

Als nächstes muß ne neue Tabelle in der Datenbank angelegt werden wo die Zeitpunkte reingeschrieben werden wann ein script das letzte mal ausgeführt wurde.

Dafür im ACP bei SQL Abfragen oder per phpMyAdmin folgendes ausführen:
Code:
CREATE TABLE `bb1_db` (
  `id` int(5) NOT NULL auto_increment,
  `cat` varchar(5) NOT NULL default '',
  `timestamp` varchar(32) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;
INSERT INTO `bb1_db` VALUES (1, 'opt', '0');
INSERT INTO `bb1_db` VALUES (2, 'rep', '0');
INSERT INTO `bb1_db` VALUES (3, 'auto_backup', '0');
INSERT INTO `bb1_db` VALUES (4, 't1close', '0');
INSERT INTO `bb1_db` VALUES (5, 't1open', '0');
INSERT INTO `bb1_db` VALUES (6, 't2close', '0');
INSERT INTO `bb1_db` VALUES (7, 't2open', '0');

Jetzt den folgenden code mit dem in der alten index.php austauschen, vorher noch die mySQL daten und eure gewünschte seite eintragen ;)

PHP:
<?php
$filename = 'index.php';

//Auto Script : start
$t1close  = "1";    // 1 = true ; 0 = false (Auto Threadclose #1)
$t1open   = "1";    // 1 = true ; 0 = false (Auto Threadopen #1)
$tid1	  = "1158"; // ThreadID für Autothread #1
$t2close  = "0";    // 1 = true ; 0 = false (Auto Threadclose #2)
$t2open   = "0";    // 1 = true ; 0 = false (Auto Threadopen #2)
$tid2	  = "8"; // ThreadID für Autothread #2
$optim    = "1";    // 1 = true ; 0 = false (Datenbankoptimierung)
$repair   = "1";    // 1 = true ; 0 = false (Datenbankoptimierung)
$abackup  = "1";    // 1 = true ; 0 = false (Autobackup mit mysqldump)
$t1cdifer = "86400";   // Zeitdifferenz für Threadclose (in Sekunden, Ganzzahl #1)
$t1odifer = "86400";   // Zeitdifferenz für Threadopen (in Sekunden, Ganzzahl #1)
$t2cdifer = "86400";   // Zeitdifferenz für Threadclose (in Sekunden, Ganzzahl #2)
$t2odifer = "86400";   // Zeitdifferenz für Threadopen (in Sekunden, Ganzzahl #2)
$difer    = "86400";   // Zeitdifferenz zwischen den einzelnen Optionen (in Sekunden, Ganzzahl)
$time     = time();
$username = ""; // mysqluser
$pass     = ""; //mysqlpasswort
$datenbank= ""; //mysql datenbank
$today    = date("d.m.y.h.i.s");
$pfad     = "./db/$today.sql"; //pfad zum backup 

// Hier wird die eigentliche datei festgelegt

include('./hmportal.php');


if ($optim=="1") 
{
$result = $db->query_first("SELECT * FROM bb".$n."_db WHERE cat='opt'");
     if ($result['timestamp'] < $time-$difer)
     {
            $result_opt = $db->query("OPTIMIZE TABLE bb".$n."_access , bb".$n."_acpmenuitemgroups , bb".$n."_acpmenuitemgroupscount , bb".$n."_acpmenuitems , bb".$n."_acpmenuitemscount , bb".$n."_adminsessions , bb".$n."_announcements , bb".$n."_applications , bb".$n."_attachments , bb".$n."_avatars , bb".$n."_bbcodes , bb".$n."_boards , bb".$n."_boardvisit , bb".$n."_designelements , bb".$n."_designpacks , bb".$n."_events , bb".$n."_folders , bb".$n."_groupcombinations , bb".$n."_groupleaders , bb".$n."_groups , bb".$n."_groupvalues , bb".$n."_groupvariablegroups , bb".$n."_groupvariables , bb".$n."_icons , bb".$n."_languagecats , bb".$n."_languagepacks , bb".$n."_languages , bb".$n."_moderators , bb".$n."_optiongroups , bb".$n."_options , bb".$n."_permissions , bb".$n."_polloptions , bb".$n."_polls , bb".$n."_posts , bb".$n."_privatemessage , bb".$n."_profilefields , bb".$n."_ranks , bb".$n."_searchs , bb".$n."_sessions , bb".$n."_smilies , bb".$n."_stats , bb".$n."_styles , bb".$n."_subscribeboards , bb".$n."_subscribethreads , bb".$n."_templatepacks , bb".$n."_templates , bb".$n."_threads , bb".$n."_threadvisit , bb".$n."_user2groups , bb".$n."_userfields , bb".$n."_users , bb".$n."_votes , bb".$n."_wordlist , bb".$n."_wordmatch");
            $result_upt = $db->unbuffered_query("UPDATE bb".$n."_db SET timestamp='$time' WHERE cat='opt'",1);
     } 
}


if ($repair=="1") {
    $result = $db->query_first("SELECT * FROM bb".$n."_db WHERE cat='rep'");
      if ($result['timestamp'] < $time-$difer)
      {
        $result = $db->query("REPAIR TABLE bb".$n."_access , bb".$n."_acpmenuitemgroups , bb".$n."_acpmenuitemgroupscount , bb".$n."_acpmenuitems , bb".$n."_acpmenuitemscount , bb".$n."_adminsessions , bb".$n."_announcements , bb".$n."_applications , bb".$n."_attachments , bb".$n."_avatars , bb".$n."_bbcodes , bb".$n."_boards , bb".$n."_boardvisit , bb".$n."_designelements , bb".$n."_designpacks , bb".$n."_events , bb".$n."_folders , bb".$n."_groupcombinations , bb".$n."_groupleaders , bb".$n."_groups , bb".$n."_groupvalues , bb".$n."_groupvariablegroups , bb".$n."_groupvariables , bb".$n."_icons , bb".$n."_languagecats , bb".$n."_languagepacks , bb".$n."_languages , bb".$n."_moderators , bb".$n."_optiongroups , bb".$n."_options , bb".$n."_permissions , bb".$n."_polloptions , bb".$n."_polls , bb".$n."_posts , bb".$n."_privatemessage , bb".$n."_profilefields , bb".$n."_ranks , bb".$n."_searchs , bb".$n."_sessions , bb".$n."_smilies , bb".$n."_stats , bb".$n."_styles , bb".$n."_subscribeboards , bb".$n."_subscribethreads , bb".$n."_templatepacks , bb".$n."_templates , bb".$n."_threads , bb".$n."_threadvisit , bb".$n."_user2groups , bb".$n."_userfields , bb".$n."_users , bb".$n."_votes , bb".$n."_wordlist , bb".$n."_wordmatch");
        $result = $db->unbuffered_query("UPDATE bb".$n."_db SET timestamp='$time' WHERE cat='rep'",1);
    } 
} 


if ($abackup=="1") 
{
$result = $db->query_first("SELECT * FROM bb".$n."_db WHERE cat='auto_backup'");
     if ($result['timestamp'] < $time-$difer)
     {
      system("mysqldump --all -c -C -q -e -l --add-drop-table --host=localhost --user=$username --password=$pass $datenbank > $pfad");
      system("gzip $pfad"); 
            $result_upt = $db->unbuffered_query("UPDATE bb".$n."_db SET timestamp='$time' WHERE cat='auto_backup'",1);
     } 
} 


if ($t1close=="1") 
{
$result = $db->query_first("SELECT * FROM bb".$n."_db WHERE cat='t1close'");
     if ($result['timestamp'] < $time-$t1cdifer)
     {
            $result_opt = $db->query("UPDATE `bb".$n."_threads` SET `closed` = '1' WHERE `threadid` = '$tid1';");
            $result_upt = $db->unbuffered_query("UPDATE bb".$n."_db SET timestamp='$time' WHERE cat='t1close'",1);
     } 
}

if ($t1open=="1") 
{
$result = $db->query_first("SELECT * FROM bb".$n."_db WHERE cat='t1open'");
     if ($result['timestamp'] < $time-$t1odifer)
     {
            $result_opt = $db->query("UPDATE `bb".$n."_threads` SET `closed` = '0' WHERE `threadid` = '$tid1';");
            $result_upt = $db->unbuffered_query("UPDATE bb".$n."_db SET timestamp='$time' WHERE cat='t1open'",1);
     } 
}
if ($t2close=="1") 
{
$result = $db->query_first("SELECT * FROM bb".$n."_db WHERE cat='t2close'");
     if ($result['timestamp'] < $time-$t2cdifer)
     {
            $result_opt = $db->query("UPDATE `bb".$n."_threads` SET `closed` = '1' WHERE `threadid` = '$tid2';");
            $result_upt = $db->unbuffered_query("UPDATE bb".$n."_db SET timestamp='$time' WHERE cat='t2close'",1);
     } 
}

if ($t2open=="1") 
{
$result = $db->query_first("SELECT * FROM bb".$n."_db WHERE cat='t2open'");
     if ($result['timestamp'] < $time-$t2odifer)
     {
            $result_opt = $db->query("UPDATE `bb".$n."_threads` SET `closed` = '0' WHERE `threadid` = '$tid2';");
            $result_upt = $db->unbuffered_query("UPDATE bb".$n."_db SET timestamp='$time' WHERE cat='t2open'",1);
     } 
}



?>

Ich suche jetzt noch nach ner Möglichkeit Gästen und Usern verschiedene Seiten anzeigen zu lassen, meine bisherigen Versuche endeten ausschließlich mit Fehlermeldungen :nut:

Ich denke mal das Threadopen/close von ner Tageszeit abhängig zu machen, bspw. später als 20uhr ist nicht irgendwie möglich, sonst gäbs dafür bestimmt schon nen Hack :D

Vielleicht kanns ja irgendwer gebrauchen *g* aber vielmehr hoff ich darauf das mir jemand bei den verschiedenen seiten weiterhelfen kann... :angle:
 
Oben