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...