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);
}
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);
}
MfG
Maestro