Anpassung für Bugfix "Tabelle automatisch leeren"

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Maestro
Mitglied
Beiträge: 94
Registriert: 04.01.2003 13:00
Kontaktdaten:

Anpassung für Bugfix "Tabelle automatisch leeren"

Beitrag von Maestro »

Moin,

leider ist mir meine Session-Tabelle vollgelaufen obwohl ich den Bugfix Tabelle automatisch leeren eingebaut hatte. Wie ich nun rausgefunden habe unterstützt mein neuer Provider die SQL_LAYER Abfrage nicht, somit kann das Script auch nicht ausgeführt werden. Ich habe das Script nun so umgeschrieben das es ohne die Abfrage auskommt und da wollte ich vor dem Einbau Fragen ob das so korrekt umgeschrieben ist. Übrigens läuft MySQL5. Hier nun das Script:

Code: Alles auswählen

$error = TRUE;

$sql_error = $db->sql_error($result);
if ($sql_error["code"] == 1114)
{
    $result = $db->sql_query('SHOW TABLE STATUS LIKE "'.SESSIONS_TABLE.'"');
    $row = $db->sql_fetchrow($result);
    if ($row["Type"] == "HEAP" || $row["Engine"] == "MEMORY")
    {
        if ($row["Rows"] > 2500)
        {
            $db->sql_query("DELETE QUICK FROM ".SESSIONS_TABLE." ORDER BY session_time ASC LIMIT 50");
        }
        else
        {
            $db->sql_query("ALTER TABLE ".SESSIONS_TABLE." MAX_ROWS=".($row["Rows"]+50));
        }

        if ($db->sql_query($sql))
        {
            $error = FALSE;
        }
    }
}
if ($error)
{
    message_die(CRITICAL_ERROR, "Error creating new session", "", __LINE__, __FILE__, $sql);
}
Zum Vergleich nochmal die Version mit dem SQL_LAYER:

Code: Alles auswählen

$error = TRUE;
if (SQL_LAYER == "mysql" || SQL_LAYER == "mysql4")
{
    $sql_error = $db->sql_error($result);
    if ($sql_error["code"] == 1114)
    {
        $result = $db->sql_query('SHOW TABLE STATUS LIKE "'.SESSIONS_TABLE.'"');
        $row = $db->sql_fetchrow($result);
        if ($row["Type"] == "HEAP" || $row["Engine"] == "MEMORY")
        {
            if ($row["Rows"] > 2500)
            {
                $delete_order = (SQL_LAYER=="mysql4") ? " ORDER BY session_time ASC" : "";
                $db->sql_query("DELETE QUICK FROM ".SESSIONS_TABLE."$delete_order LIMIT 50");
            }
            else
            {
                $db->sql_query("ALTER TABLE ".SESSIONS_TABLE." MAX_ROWS=".($row["Rows"]+50));
            }
            if ($db->sql_query($sql))
            {
                $error = FALSE;
            }
        }
    }
}
if ($error)
{
    message_die(CRITICAL_ERROR, "Error creating new session", "", __LINE__, __FILE__, $sql);
}
Ich hoffe ihr könnt die Frage beantworten.

MfG

Maestro
Maestro
Mitglied
Beiträge: 94
Registriert: 04.01.2003 13:00
Kontaktdaten:

Beitrag von Maestro »

Habe die Sessionlänge mal auf 24h gestellt um zu schauen ob das umgeschriebene Script funktioniert. Leider nein, bin jetzt also ziemlich ratlos wo das Problem liegen könnte.

MfG

Maestro
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“