Mailinglisten-Archive |
hi leute..
ich hab eine klasse ("sessionara", infos auf php.dn2k.ch), welche ein
timestamp in der datenbank (mysql) updaten soll. leider ist eine total
falsche zahl dann in der tabelle als es sein sollte. die zahl ist viel
zu hoch, sprich das timestamp in sehr sehr ferner zukunft und so kann
ich dann den record nicht rauslöschen (löschen folgt anhand des
timestamps..)
im /var/log/mysql/mysql.log hab ich folgden output, sprich meine klasse
führt letztendlich die folgenden queries aus
SELECT * FROM `foo_sessions` WHERE `sid`='9d3b2a9ff448a8b6b6d5f704b0'
AND `addr`='2cafc705671d22fc9f7cfdeaf580ee52' LIMIT 0,1
UPDATE `foo_sessions` SET `expire`=10626840480 WHERE
`sid`='9d3b2a9ff448a8b6b6d5f704b0' AND
`addr`='2cafc705671d22fc9f7cfdeaf580ee52'
2 sehr einfache queries also. nun gehts ums feld "expire".. grad nach
dem update hat expire aber einen ganz anderen wert als den gesetzten,
nämlich '2147483647^! wieso?? wie kann das sein? wieso steht sowas dann
nicht in meinem mysql.log, wenn da nochwas dran geändert wird..
machen tut das die klasse, source findet sich hier ->
http://php.xbe.ch/session.phps
zuständig ist die funktion give_lifetime(), welche bei jeder
instanzierung aufgerufen wird:
function give_lifetime() {
$this->data["SESSION_EXPIRE"] =
(time()+60)*$this->cfg["session_howlong"];
mysql_query(($this->complete_sql("UPDATE `{$this->cfg["db_table"]}`
SET `expire`={$this->data["SESSION_EXPIRE"]} WHERE `sid`='{$this->sid}'")));
if(mysql_affected_rows() > 0) return $this->data["SESSION_EXPIRE"];
else return false;
}
$this->cfg["session_howlong"] is defaultmässig 10.. sprich es zum
timestamp 600 sekunden addieren, aber nicht das timestamp verdoppeln..!
any hints?!
regards
dario nuevo
php::bar PHP Wiki - Listenarchive