Seite 1 von 2

Sessions Mangement (tester gesucht)

Verfasst: 20.10.2003 17:56
von Dwing
Hi.
Ich arbeite bei einem recht großen Board mit. Um das Problem mit der vollen Sessionstabelle zu lösen hab ich nen kleinen Mod geschrieben, welcher die Tabelle wenn sie voll ist automatisch um die ältesten x Sessions erleichtert.

Gibt auch ein kleines Adminpanel dazu. Wenn jemand Zeit hat es zu testen:
http://www.weingarten-net.de/static/files/unstable/
admin_sessions.php

Nur hochladen. Wär schön wenn einer die Ergebnisse postet.

Verfasst: 20.10.2003 19:55
von Underhill
Los Wochos,

- einbinden des Mods ist super easy
- leeren der Sessions ist auch Ok

Fehler bekomme ich aber bei OPTIMIZE und REPAIR.

Du solltest ggf. den Punkt (zum Addieren des Strings)

Code: Alles auswählen

$sql .= 'REPAIR table ' . SESSIONS_TABLE . ';';
wegmachen... (Dann klappte es bei mir)

Nutze PHP 4.3.3 + mysql 4.0.14b gegen W2K-SRVSP4 Ger


Ausserdem finde ich die Aussage:
Verbleibende bis zur Löschung: x
zweideutig... Da wuerde ich von einer Automatischen Loeschung ausgehen...


Aber sonst : Top!


Gruss
Underhill

Verfasst: 21.10.2003 14:11
von Dwing
Underhill hat geschrieben:Los Wochos,

- einbinden des Mods ist super easy
- leeren der Sessions ist auch Ok

Fehler bekomme ich aber bei OPTIMIZE und REPAIR.

Du solltest ggf. den Punkt (zum Addieren des Strings)

Code: Alles auswählen

$sql .= 'REPAIR table ' . SESSIONS_TABLE . ';';
wegmachen... (Dann klappte es bei mir)

Nutze PHP 4.3.3 + mysql 4.0.14b gegen W2K-SRVSP4 Ger


Ausserdem finde ich die Aussage:
Verbleibende bis zur Löschung: x
zweideutig... Da wuerde ich von einer Automatischen Loeschung ausgehen...


Aber sonst : Top!


Gruss
Underhill
Danke!
Das mit dem automatischen löschen stimmt schon. Die Sessions Tabelle ist bei 550 Einträgen voll.
Der Mod wird jedesmal wenn 100 Einträge erreicht sind, die ältesten 50 Sessions Löschen.

Verfasst: 21.10.2003 17:33
von Underhill
Hi,
Dwing hat geschrieben:Der Mod wird jedesmal wenn 100 Einträge erreicht sind, die ältesten 50 Sessions Löschen.
Ah - "wird" :wink:

aber nur aus Interesse:

Wie willst du das Autoloeschen realisieren? Bei Aufruf ueber ACP oder Cron-Job?


Danke und Gruss
Underhill

Verfasst: 21.10.2003 17:53
von Dwing
nö, durch die common.php

Die Überprüft bei jedem Seitenaufruf die Anzahl der vorhandenen Sessions.
Wenn über 100, dann wird gelöscht.
Evtl. setzt ich die 100 noch etwas hoch. Ich muss noch geeignete Werte finden.

Der Code steht aber schon.

Code: Alles auswählen

//
// Get data from sessions tale
//
$sql = "SELECT *
	FROM " . SESSIONS_TABLE;
if ( !($result = $db->sql_query($sql)) )
{
	message_die(CRITICAL_ERROR, 'Error while selecting sessions', '', __LINE__, __FILE__, $sql);
}

// Counting the sessions
$session_count = $db->sql_numrows($result);

//
// Delete old sessions
//
$sql = 'DELETE FROM ' . SESSIONS_TABLE . '
	ORDER BY session_start
	LIMIT 50;
if ( $session_count >= '100' )
{
	if ( !$db->sql_query($sql) )
	{
		message_die(CRITICAL_ERROR, 'Error clearing sessions table', '', __LINE__, __FILE__, $sql);
	}
}

Verfasst: 22.10.2003 12:07
von Elo_
Mit diesen zusätzlichen Änderungen funktioniert er auch bei mir:

Code: Alles auswählen

    <tbody>
      <tr>
        <th class="thcornerl" height="22">Aktionen</th>
      </tr>
      <tr>
	<td class="row2"><div align="left"><a href="<?php print append_sid("admin_sessions.$phpEx"); ?>?mode=delete_all">Alle Sessions löschen</a></div></td>
      </tr>
      <tr>
	<td class="row1"><div align="left"><a href="<?php print append_sid("admin_sessions.$phpEx"); ?>?mode=delete_limit"><?php print $limit ?> Sessions löschen</a></div></td>
      </tr>
      <tr>
	<td class="row2"><div align="left"><a href="<?php print append_sid("admin_sessions.$phpEx"); ?>?mode=optimize">Tabelle optimieren</a></div></td>
      </tr>
      <tr>
	<td class="row1"><div align="left"><a href="<?php print append_sid("admin_sessions.$phpEx"); ?>?mode=repair">Tabelle reparieren</a></div></td>
      </tr>
    </tbody>
Elo

Verfasst: 22.10.2003 19:28
von Underhill
@Dwing:

Die Idee mit der common.php finde ich gut...

Schreib' doch die Anzahl der Sessions als Variable ueber das ACP in der Tabelle "_config" - das schein mir relativ ungefaehrlich...


Gruss
Underhill

Verfasst: 22.10.2003 22:47
von Dwing
Underhill hat geschrieben:@Dwing:

Die Idee mit der common.php finde ich gut...

Schreib' doch die Anzahl der Sessions als Variable ueber das ACP in der Tabelle "_config" - das schein mir relativ ungefaehrlich...


Gruss
Underhill
Hatte ich ursprünglich vor, allerdings werden dann viele die keine Ahnung davon haben dran rumspielen und evtl. alles zerschießen...

Verfasst: 23.10.2003 23:12
von TheSteffen
Habe Ihn bei mir auch getestet und funktioniert ganz gut.

Nur das optimieren klappt nicht trotz der Herrausnahme des obigen Codes.
Folgende Fehlermeldung:

Code: Alles auswählen

SQL Error : 1064 You have an error in your SQL syntax near 'table phpbb_sessions' at line 2

SELECT * FROM phpbb_sessionsOPTIMIZE table phpbb_sessions;

Line : 125
File : /data/httpd/htdocs/phpBB2/admin/admin_sessions.php
Gruß
Steffen

Verfasst: 25.10.2003 15:10
von merlin_76
Hey...

Gibt es schon eine fertige und getestete Lösung für das automatische Löschen der Session-Table??

Hab folgendes Problem: http://www.phpbb.de/viewtopic.php?t=38616&highlight=

Besten Dank
Thomas