Seite 1 von 2

session table voll ?

Verfasst: 11.06.2003 07:43
von fussle
hatte gerade eben folgende fehlermeldung:

Code: Alles auswählen

Warning: Failed opening './language/lang_english/lang_main.php' for inclusion (include_path='.:/usr/local/lib/php') in /home/xxx/forum/includes/functions.php on line 616
phpBB : 

Error creating new session

DEBUG MODE

SQL Error : 1114 The table 'phpbb_sessions' is full

INSERT INTO phpbb_sessions (session_id, session_user_id, session_start, session_time, session_ip, session_page, session_logged_in) VALUES ('cde0fb6ccefca89c9361efcb36a0312c', -1, 1055309836, 1055309836, 'd9e1af52', 27, 0)

Line : 152
File : /home/xxx/forum/includes/sessions.php 
woran liegt es ? hab gestern den DB Maintenance Mod 0.9.0 eingebaut.
nach dem leeren der table via phpmyadmin funktionierte wieder alles.

nachtrag: folgende funktion hab ich genutzt:
Konvertiere Sitzungs-Tabelle - Diese Funktion konvertiert die Sitzungs-Tabelle zum HEAP-Tabellen-Typ. Dies wird normalerweise automatisch während der Installation gemacht, um die Geschwindigkeit von phpBB etwas zu verbessern. Diese Funktion sollte nur ausgeführt werden, wenn die Sitzungs-Tabelle keine HEAP-Tabelle ist.

Verfasst: 11.06.2003 10:50
von PhilippK
War nicht ganz die richtige Funktion (das Leeren der Sitzungsdaten hätte ausgereicht) - aber vom Ergebnis her sollte es aufs gleiche kommen.
Zum Fehler selbst: kann ab und zu mal vorkommen, dass die Sitzungs-Tabelle voll läuft. Die Zahl der Einträge dort ist aus Sicherheitsgründen begrenzt - sonst wäre ggf. irgendwann die Sitzungstabelle so groß wie der ganze Arbeitsspeicher des Rechners...

Gruß, Philipp

Verfasst: 11.06.2003 11:29
von fussle
also ich hab danach erstmal die session_table gelöscht und folgende angelegt:

Code: Alles auswählen

CREATE TABLE `phpbb_sessions` (
  `session_id` char(32) NOT NULL default '',
  `session_user_id` mediumint(8) NOT NULL default '0',
  `session_start` int(11) NOT NULL default '0',
  `session_time` int(11) NOT NULL default '0',
  `session_ip` char(8) NOT NULL default '0',
  `session_page` int(11) NOT NULL default '0',
  `session_logged_in` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`session_id`),
  KEY `session_user_id` (`session_user_id`),
  KEY `session_id_ip_user_id` (`session_id`,`session_ip`,`session_user_id`)
) TYPE=HEAP;
seit dem gehts auch wieder ... muss ich jetzt noch irgendwas beachten ?

Verfasst: 11.06.2003 11:45
von PhilippK
Du hast die Größenbegrenzung der HEAP-Tabelle vergessen. Die würde ich aus Sicherheitsgründen hinzufügen (frag mich jetzt aber bitte nicht, mit welchem Befehl - müsste ich später nachschauen). Da die Tabelle ausschließlich im Speicher existiert, läufst du sonst Gefahr, dass - wenn wieder was schief geht - der komplette Speicher durch die Session-Tabelle gefressen wird.

Gruß, Philipp

Verfasst: 11.06.2003 11:51
von fussle
@philipp - danke erstmal für die infos

:o - wäre klasse, wenn mal jemand den kompletten sql posten könnte

Verfasst: 12.06.2003 10:39
von PhilippK
So, hier der SQL-Befehl:

Code: Alles auswählen

ALTER TABLE phpbb_sessions
    TYPE=HEAP MAX_ROWS=500
Gruß, Philipp

Verfasst: 12.06.2003 11:57
von fussle
danke :grin:

Verfasst: 18.05.2004 21:45
von Gast
PhilippK hat geschrieben:So, hier der SQL-Befehl:

Code: Alles auswählen

ALTER TABLE phpbb_sessions
    TYPE=HEAP MAX_ROWS=500
Gruß, Philipp
Und was machst du wenn sich mehr als 500 User auf deinem Board tummeln? :o

Warum kann die Tabelle nicht im Typ MyISAM erstellt werden, und ohne Begrenzung laufen? :-?

Verfasst: 18.05.2004 22:51
von PhilippK
xGalaxius hat geschrieben:Und was machst du wenn sich mehr als 500 User auf deinem Board tummeln? :o
500 User gleichzeit online ist schon recht heftig - wenn du so viele haben solltest, wird's sowieso Zeit für 'nen anderes Datenbank-Konzept ;-)
xGalaxius hat geschrieben:Warum kann die Tabelle nicht im Typ MyISAM erstellt werden, und ohne Begrenzung laufen? :-?
Kann man natürlich auch - kostet etwas Performance und (wenn's nicht funzt) ist irgendwann die Platte voll.

Gruß, Philipp

Verfasst: 19.05.2004 07:58
von Gast
PhilippK hat geschrieben:
xGalaxius hat geschrieben:Und was machst du wenn sich mehr als 500 User auf deinem Board tummeln? :o
500 User gleichzeit online ist schon recht heftig - wenn du so viele haben solltest, wird's sowieso Zeit für 'nen anderes Datenbank-Konzept ;-)
Ist das phpBB dafür nicht geeignet? :o
Da habe ich aber ganz anderes vor! Ich hatte mir sogar schon eine Lizenz vom vBulletin gekauft deswegen, bin aber reumütig wieder zurückgekehrt, weil es geht einfach nichts über phpBB. :)

€dit:
Gestern hatte ich die Tabelle gelöscht (geleert), und tagsüber 10 Besucher oder so gehabt. Nachts hat dann Google gewütet:

Code: Alles auswählen

SQL-Befehl : [Bearbeiten] [SQL erklären] [PHP-Code erzeugen]
SELECT count( * ) 
FROM `phpbb1_sessions` 
WHERE session_user_id = - 1  




count( * )  
816
PhilippK hat geschrieben:
xGalaxius hat geschrieben:Warum kann die Tabelle nicht im Typ MyISAM erstellt werden, und ohne Begrenzung laufen? :-?
Kann man natürlich auch - kostet etwas Performance und (wenn's nicht funzt) ist irgendwann die Platte voll.
Warum? Werden die Einträge in der session table denn nie gelöscht (defaultmäßig)?

LG

Sascha