官方的例子
http://webpy.org/cookbook/sessions.zh-cn
服务器端有三种方式存session
一种是基本的store ,放在内存里吧
一种是diskstore ,会在code.py同级建一个sessions的文件夹
一种是dbstore,要对应的建一个表,试着改过对应的列的名字,会报错,目前看来也就是这个db的表里面的东西都是固定的
create table sessions (
session_id char(128) UNIQUE NOT NULL,
atime timestamp NOT NULL default current_timestamp,
data text
);
测试的结果
db.py
import sqlite3
cx = sqlite3.connect('d:/temp/sessions.db')
cu=cx.cursor()
#cu.execute(''' create table sessions (
#session_id char(128) UNIQUE NOT NULL,
#atime timestamp NOT NULL default current_timestamp,
#data text)
#''')
#cx.commit()
cu.execute('select * from sessions')
for i,row in enumerate(cu):
print i,row
cx.close()
code.py
import web
import sqlite3
web.config.debug = False
urls = (
"/count", "count",
"/reset", "reset"
)
app = web.application(urls, locals())
#store = web.session.DiskStore('sessions')
#session = web.session.Session(app, store, initializer={'count': 0})
db = web.database(dbn='sqlite', db='sessions.db', )
store = web.session.DBStore(db, 'sessions')
session = web.session.Session(app, store, initializer={'count': 0})
class count:
def GET(self):
session.count += 1
return str(session.count)
class reset:
def GET(self):
session.kill()
store.cleanup(0.002) #加了个cleanup看效果来着
return ""
if __name__ == "__main__":
app.run()
真是太简单了,连session都有3种方法可以选,我怎么没记得以前java有这么灵活呢?
不过,不管是读写文件还是数据库,总是比较慢的吧?
还有挺奇怪的是reset的时候,不要cleanup一下么?只是kill掉进程的话,不论是文件还是db,都会越来越大的 吧?
真要是本番的话,要不要再写个cron定期清一下?
或者如果真的是本番,根本不会用这2个方法?
2483

被折叠的 条评论
为什么被折叠?



