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