跟別的luajit框架同樣,擁有簡單易用,易部署,易維護,性能優越,並且能夠使用c/c++各類接口。c++
除此外,還能夠兼容openresty各類庫,尤爲基於socket的lua庫, 好比redis,smtp,luasql等web
本框架和別的框架最大區別是,不須要修改接口便可使用同步阻塞接口,改爲同步非阻塞接口。redis
數據SQL操做部分接口就是同步阻塞,經過ExecuteSQL委託給其餘線程,處理結束後,返回結果。sql
--登陸
local function http_blog_login(req)
local buffer = evhttp_get_input_buffers(req)
local obj = json.decode(buffer)
--local context = {title=obj.title, doc=obj.doc}
print('http_blog_login******************************************************', json.encode(obj))
local sql = [[SELECT * FROM blogs.accounts where account=']].. escape_sql(obj.account) ..[[';]]
local ret,rows=ExecuteSQL(THREADID_SQL, sql,true)
if not ret then
print('http_blog_postxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', rows)
return
end
if #rows==0 then
print('http_blog_modify******************************************************',res)
HttpResponeError(req, 1000, GetUtf8ByGBK('帳號未註冊'))
return
end
if rows[1].loginpassword ~= obj.password then
HttpResponeError(req, 1001, GetUtf8ByGBK('密碼錯誤'))
return
end
if rows[1].state=='0' then
HttpResponeError(req, 1002, GetUtf8ByGBK('帳號未激活'))
return
end
HttpRespone(req, function(req)
local time = os.time()+60*60*24
local token = md5.sumhexa(rows[1].userid..MAGIC_CODE..time)
local cookies = {userid=rows[1].userid, logintime=time, token=token} --'userid='..rows[1].userid..';'..'logintime='..time..';token='..token
local base64 = ZZBase64.encode(json.encode(cookies))
local res = json.encode({errcode=0, errmsg=GetUtf8ByGBK('登陸成功'), cookie='login='..base64})
print('http_blog_login******************************************************',res)
evhttp_add_header(req, 'Content-Type', "text/json")
evhttp_send_reply(req,200,'ok', res)
end)
end
json