跟别的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