prepare("SELECT data FROM sessions WHERE id = ? AND updated_at > DATE_SUB(NOW(), INTERVAL " . self::TTL . " SECOND)"); $stmt->execute([$id]); $row = $stmt->fetch(); return $row ? $row['data'] : ''; } public function write(string $id, string $data): bool { db()->prepare("INSERT INTO sessions (id, data) VALUES (?, ?) ON DUPLICATE KEY UPDATE data = VALUES(data), updated_at = NOW()") ->execute([$id, $data]); return true; } public function destroy(string $id): bool { db()->prepare("DELETE FROM sessions WHERE id = ?")->execute([$id]); return true; } public function gc(int $max_lifetime): int|false { $stmt = db()->prepare("DELETE FROM sessions WHERE updated_at < DATE_SUB(NOW(), INTERVAL ? SECOND)"); $stmt->execute([self::TTL]); return $stmt->rowCount(); } }