Seite 1 von 1

Funktionierender Session Manager??

Verfasst: Mi 08.Jun, 2005 00:21
von SethDeBlade
Ich suche einen Mod, der die Sessiontable selbstständig leert, wenn eine bestimmte Anzahl von gespeicherten Sessions erreicht ist. Der Mod von Dwing funktioniert bei mir irgendwie nicht. Er produziert einen Fehler, der das komplette Board lahm legt. Außerdem hält er sich nicht an das phpbb-Design mit Templates usw.

gibts da vielleicht ne Alternative??? Wie macht ihr das?

Verfasst: Mi 08.Jun, 2005 00:22
von oxpus
Manuelle alle paar Wochen mit dem DB Maintanance Mod.
Oder auch per phpmyadmin, wenn ich es mal gerade offen habe.

Verfasst: Mi 08.Jun, 2005 01:22
von SethDeBlade
habe gerade durch zufall das hier gefunden
http://www.phpbb.com/kb/article.php?article_id=42

Verfasst: Mi 08.Jun, 2005 05:22
von AmigaLink
ZU dem Artikel würden mich mal ein paar Erfahrungswerte Interessieren!

Verfasst: Mi 08.Jun, 2005 06:23
von Max
[quote="AmigaLink - Mi 08.Jun, 2005 05:22";p="34804"]ZU dem Artikel würden mich mal ein paar Erfahrungswerte Interessieren![/quote]


Meinst Du das jetzt ernst?

Den selben Artikeln gibts doch bei phpbb.de euf deutsch.

Das Snippet, mit dem die Sessions-Tabelle geleert wird, statt die Meildung, sie sei voll, zu zeigen, nutze ich seit über 2 Jahren - funktioniert prächtig.

Darunter das Snippet, welches die Anzahl der Session je IP begrenzt ist seit dem Update auf 2.0.15 nicht mehr brauchbar, weil man dann ratzfatz nicht mehr ins ACP kommt, spätestens, wenn man viel auf dem Board umhergeklickt hat. Also würde ich davon abraten, ich habe das wieder ausgebaut.


Ansonsten kann ich es wirklich empfehlen, diese Änderung zu machen:

Code: Alles auswählen

Code: 
message_die(CRITICAL_ERROR, 'Error creating new session', '', __LINE__, __FILE__, $sql); 

Replace this with the following code. 

Code: 
$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") 
        { 
            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); 
} 

Gruß Max

Verfasst: Mi 08.Jun, 2005 17:40
von AmigaLink
Das Snippet, mit dem die Sessions-Tabelle geleert wird, statt die Meildung, sie sei voll, zu zeigen, nutze ich seit über 2 Jahren - funktioniert prächtig.
DAS wollte ich wissen! Danke.

Der rest ist IMHO uninteressant und obs den Text auch auf Deutsch gibt ist mir ebenfalls wurst. :)

Ich habe allerdings mit dem Sessions Manager, den Seth erwähnt hat, bereits vor ewigen Zeiten unheimliche Probleme bekommen und mir mehrfach das Baord zerschossen (Tabellenüberlauf). Deswegen bin ich bezüglich des Sessionstabelle sehr vorsichtig geworden. Denn mit 250- 700 (verschiedenen) Besuchern pro tag und einem momentanem Suchmaschienenansturm den man garnicht in Worte fassen kann, möchte ich mir keine unnötigen Experimente erlauben. Vorallem weil ich auch so keine größeren Probleme mit den Sessionen habe. :D

Mir reicht schon, das mein Counter momentan ständig überfordert ist und gelegentlich die Zählerstände auf 0 setzt. :mad:
(Da muss ich unbedingt mal ran!)