Rolf Rost: Open Source Forum mit MySQL - Anbindung

Beitrag lesen

Moin,

da hast du allerdings recht. dafür kann ja weiterhin rolfs lösung mit der funktion clock() dienen, wenn man zu dem schlüssel jeweils einen tmestamp speichert.

Auf jeden Fall lässt sich das optimieren, indem es in dieser locktable (oder auch sessiontable) einen index auf den Zeitstempel gibt. Dieser index greift dann in der where Klausel derart, dass die Funktion clock() schnell fertig ist, der Aufruf von clock() bei jedem Scriptdurchlauf ist dann tatsächlich nicht weiter 'tragisch'.

Und so sieht das dann auch aus: KEY idx (ts) <= timestap

CREATE TABLE locktable (
    initid varchar(100) NOT NULL default '',
    ts bigint(20) NOT NULL default '0',
    PRIMARY KEY  (initid),
    KEY idx (ts)
  ) TYPE=BerkeleyDB;

locktable clean_lock

alles loeschen was aelter als current_time - 10

sub clock{
 my $time = time - 10;
 $dbh->do("DELETE FROM locktable WHERE ts < '$time' ");
 return;
}### end sub clock

Btw. noch was zu transaktionen mit MySQL:

http://www.linux-magazin.de/Artikel/ausgabe/2001/08/mysql/mysql.html

Viele Grüße, Rolf

--
Für unsere Putzfrau haben wir auch dieses Jahr wieder gesammelt...