[Erledigt]Thread nach 24h gelöscht und wieder neu erstellt

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
der-rene
Mitglied
Beiträge: 42
Registriert: 03.03.2006 20:27

Beitrag von der-rene »

Hallo

@ Miriam,
nun habe auch 2 Tage getestet du hast recht durch den cronjob wird jedes mal der kompletthe thread gelöscht und nächsten tag ein anderer der die selbe thread id hat.


Mhhm wie mache ich das nun gescheit?

LG René
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

IOch habe noch einmal auf diesem Forum geschaut. Es scheint entgegen der Aussage dort doch nicht so ganz automaisch gelöscht zu werden. Ein Anhaltspunkt dafür könnte sein, dass der Thread eine neue Erstellzeit hat und jetzt von einem anderen Administrator eröffnet wurde.

Welche "Lösung" hast Du denn nun gewählt, Rene?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
der-rene
Mitglied
Beiträge: 42
Registriert: 03.03.2006 20:27

Beitrag von der-rene »

Also die die letzen 2 Sondermüll Threads habe ich (eigentlich die Mods) dann immer von Hand neu erstellt.
Weil ja der andere weg war. Da unsere "Textvorlage" weg war haben wir ein anderen genommen und dann nachinein den ersten Beitrag (von Katrin) umgeändert als sie meine Textvorlage wieder hatte.

Hatte dein Code von Seite eins benutzt.

LG René
-----

Code: Alles auswählen

?php
// hier den relativen Pfad zur config.php des Forums eintragen
include ("./phpBB2/config.php");

// Parameter für Topic_ID ANPASSEN!!
$topic_to_clean = 22;

// Parameter für minimale Postinganzahl im Topic.
// Es bleibt nur das Starterposting erhalten.
$j = 0;


/*** DO NOT CHANGE CODE BEYOND THIS LINE ***/

$db = @MYSQL_CONNECT($dbhost,$dbuser,$dbpasswd)
      or die ("Konnte keine Verbindung zur Datenbank herstellen");
$db_check = @MYSQL_SELECT_DB($dbname);

$posts_to_kill = '';

$sql = "SELECT post_id
       FROM `" . $table_prefix . "posts`
       WHERE `topic_id` = '" . $topic_to_clean . "'
       ORDER BY post_id ASC";
if ( !($result = mysql_query($sql)) ) {
    message_die(GENERAL_ERROR, 'Konnte die Postdaten nicht auslesen', '', __LINE__, __FILE__, $sql);
}

$kill_post = array();
while ( $row = mysql_fetch_array($result) ) {
    $kill_post[] = $row['post_id'];
}

array_shift($kill_post);

if (count($kill_post) > $j) {
    for ($i=0; $i<(count($kill_post)-$j); $i++) {
           $posts_to_kill .= (($i+1)<(count($kill_post)-$j)) ? ($kill_post[$i] . ",") : $kill_post[$i];
    }
    $sql = array();
    $sql[] = "DELETE FROM `" . $table_prefix . "posts_text`
              WHERE `post_id` IN ($posts_to_kill)";
    $sql[] = "DELETE FROM `" . $table_prefix . "posts`
              WHERE `post_id` IN ($posts_to_kill)";
    for( $i = 0; $i < count($sql); $i++ ) {
        if( !$result = mysql_query ($sql[$i]) ) {
                $error = mysql_error();
        }
    }
}
$db_close = @MYSQL_CLOSE($db);
?>
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Okay, das sollte jetzt aber funzen....


Finde in meinem Code:

Code: Alles auswählen

    $sql[] = "DELETE FROM `" . $table_prefix . "posts`
              WHERE `post_id` IN ($posts_to_kill)";
danach füge ein:

Code: Alles auswählen

    $sql[] = "UPDATE `" . $table_prefix . "topics`
              SET `topic_last_post_id` = `topic_first_post_id`,
              `topic_views` = 0,
              `topic_replies` = 0,
              `topic_vote` = 0,
              `topic_moved_id` = 0
              WHERE `topic_id` = " . $topic_to_clean;
Also bei mir geht es jetzt... Und das Posting ist nicht weg, es steht immer noch in der DB. Aber es wird nicht angezeigt....
Es sollte keine Probleme machen. Falls doch jag' doch mal den DB Maintenance Mod drüber.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
der-rene
Mitglied
Beiträge: 42
Registriert: 03.03.2006 20:27

Beitrag von der-rene »

so ist das jetzt richtig?
#!/usr/bin/php4 -q
<?php

// hier den relativen Pfad zur config.php des Forums eintragen
include ("/home/www-data/heiratsfreu/phpBB2/config.php");

// Parameter für Topic_ID ANPASSEN!!
$topic_to_clean = 22691;

// Parameter für minimale Postinganzahl im Topic.
// Es bleibt nur das Starterposting erhalten.
$j = 0;


/*** DO NOT CHANGE CODE BEYOND THIS LINE ***/

$db = @MYSQL_CONNECT($dbhost,$dbuser,$dbpasswd)
or die ("Konnte keine Verbindung zur Datenbank herstellen");
$db_check = @MYSQL_SELECT_DB($dbname);

$posts_to_kill = '';

$sql = "SELECT post_id
FROM `" . $table_prefix . "posts`
WHERE `topic_id` = '" . $topic_to_clean . "'
ORDER BY post_id ASC";
if ( !($result = mysql_query($sql)) ) {
message_die(GENERAL_ERROR, 'Konnte die Postdaten nicht auslesen', '', __LINE__, __FILE__, $sql);
}

$kill_post = array();
while ( $row = mysql_fetch_array($result) ) {
$kill_post[] = $row['post_id'];
}

array_shift($kill_post);

if (count($kill_post) > $j) {
for ($i=0; $i<(count($kill_post)-$j); $i++) {
$posts_to_kill .= (($i+1)<(count($kill_post)-$j)) ? ($kill_post[$i] . ",") : $kill_post[$i];
}
$sql = array();
$sql[] = "DELETE FROM `" . $table_prefix . "posts_text`
WHERE `post_id` IN ($posts_to_kill)";


$sql[] = "UPDATE `" . $table_prefix . "topics`
SET `topic_last_post_id` = `topic_first_post_id`,
`topic_views` = 0,
`topic_replies` = 0,
`topic_vote` = 0,
`topic_moved_id` = 0
WHERE `topic_id` = " . $topic_to_clean;

$sql[] = "DELETE FROM `" . $table_prefix . "posts`
WHERE `post_id` IN ($posts_to_kill)";


for( $i = 0; $i < count($sql); $i++ ) {
if( !$result = mysql_query ($sql[$i]) ) {
$error = mysql_error();
}
}
}
$db_close = @MYSQL_CLOSE($db);

?>
Das was lila ist habe ich eine frage , wieso ist das doppelt? ist doch doppelt odeR?

lg und danke rené
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Lies es langsam und du siehst den Unterschied... Und es sollte hinter das 2te lila gefärbte. :)
Aber so sollte es auch gehen.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
der-rene
Mitglied
Beiträge: 42
Registriert: 03.03.2006 20:27

Beitrag von der-rene »

oh mann post und post_text hätte ich lesen sollen :-)

so nun muss ich warten bis morgen der cronjob anläuft leider habe ich ein paar logging probleme das heist eine /var/log/cron etc finde ich leider ned und in der /var/log/message finde ich nur
Oct 26 14:43:37 heiratsfreu -- MARK --

und in der syslog alles mögliche :-(

ich bin mal am suchen und lernen
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Du kannst doch die Datei manuell ausführen....
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
der-rene
Mitglied
Beiträge: 42
Registriert: 03.03.2006 20:27

Beitrag von der-rene »

dann ist aber doch der thread weg oder?
muss ich halt backup von der db machen denke ich

also:
heiratsfreu:/home/admin# /etc/cron.daily/killsondermuell

ergebnis:

http://heirats-freu.de/phpBB2/viewtopic.php?t=22734

1 startposting ... so wie ich es haben wollte:-)
danke dafür!
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Na also....
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Antworten

Zurück zu „Coding & Technik“