Überflüssige Sessions löschen
Verfasst: 14.08.2006 15:44
Hi,
meine Programmierkenntnisse halten sich in Grenzen. Ich habe folgendes Problem.
In meinem Forum gibt es einige User die ständig endlos viele Einträge bzw. Sessions erzeugen. Da mein VServer performancetechnisch ausreichend aber nicht super ist wird das Forum immer sehr langsam wenn die betreffenden User online sind. Leider ließ sich das Problem bei den User am Rechner nicht lösen. Deshalb habe ich mich entschlossen einige Zeilen in die index.php einzubauen, die überflüssige Sessions löschen. Das ganze scheint zu Funktionieren. Hier der Code:
$sql = "SELECT COUNT(*) as numrows
FROM " . SESSIONS_TABLE . "
WHERE session_user_id = '".$userdata['user_id']."'
AND session_id <> '".$userdata['session_id']."'";
$result = mysql_query($sql);
$session_count = mysql_result($result,0);
if ( $session_count >= '1')
{
$sql = "DELETE
FROM " . SESSIONS_TABLE . "
WHERE session_user_id = '".$userdata['user_id']."'
AND session_id <> '".$userdata['session_id']."'";
$result = mysql_query($sql);
$sql = "DELETE
FROM " . SESSIONS_TABLE . "
WHERE session_ip = '".$user_ip."'
AND session_user_id = '-1'";
$result = mysql_query($sql);
}
Das ganze scheint auch zu funktionieren. Da es aber wie gesagt in der index.php ist, dementsprechend oft ausgeführt wird und meine Laienprogrammierkenntnise hier aufhören, würde ich den Code gerne vereinfachen und hoffe auf Eure Hilfe.
Zusätzlich sind mir keine Probleme bewusst die durch den Code entstehen können.
Deshalb die Bitte an die Cracks oder Pros, sich den Code anzuschauen, den Code vielleicht zu vereinfachen oder zu verbessern und mir mögliche Probleme aufzuzeigen.
meine Programmierkenntnisse halten sich in Grenzen. Ich habe folgendes Problem.
In meinem Forum gibt es einige User die ständig endlos viele Einträge bzw. Sessions erzeugen. Da mein VServer performancetechnisch ausreichend aber nicht super ist wird das Forum immer sehr langsam wenn die betreffenden User online sind. Leider ließ sich das Problem bei den User am Rechner nicht lösen. Deshalb habe ich mich entschlossen einige Zeilen in die index.php einzubauen, die überflüssige Sessions löschen. Das ganze scheint zu Funktionieren. Hier der Code:
$sql = "SELECT COUNT(*) as numrows
FROM " . SESSIONS_TABLE . "
WHERE session_user_id = '".$userdata['user_id']."'
AND session_id <> '".$userdata['session_id']."'";
$result = mysql_query($sql);
$session_count = mysql_result($result,0);
if ( $session_count >= '1')
{
$sql = "DELETE
FROM " . SESSIONS_TABLE . "
WHERE session_user_id = '".$userdata['user_id']."'
AND session_id <> '".$userdata['session_id']."'";
$result = mysql_query($sql);
$sql = "DELETE
FROM " . SESSIONS_TABLE . "
WHERE session_ip = '".$user_ip."'
AND session_user_id = '-1'";
$result = mysql_query($sql);
}
Das ganze scheint auch zu funktionieren. Da es aber wie gesagt in der index.php ist, dementsprechend oft ausgeführt wird und meine Laienprogrammierkenntnise hier aufhören, würde ich den Code gerne vereinfachen und hoffe auf Eure Hilfe.
Zusätzlich sind mir keine Probleme bewusst die durch den Code entstehen können.
Deshalb die Bitte an die Cracks oder Pros, sich den Code anzuschauen, den Code vielleicht zu vereinfachen oder zu verbessern und mir mögliche Probleme aufzuzeigen.