local lock = require "resty.lock"
--获取连接对象
local conn =mongo:new()
conn:set_timeout(1000)
--获取连接客户端
local ok,err =conn:connect("192.168.1.254",27017)
if not ok then
ngx.log(ngx.ERR, "connect failed:"..err)
ngx.say("connect failed: "..err)
return
else
local locks_flag = ngx.shared.activity_cache
--判断此连接是不是从连接池里面拿出来的
local times,err = conn:get_reused_times()
if times == nil or times == 0 then
local lock_cache = lock:new("activity_cache")
local elapsed, err = lock_cache:lock("auth_key")
if not elapsed then
--ngx.log(ngx.ERR,"locked failed:"..err)
return
end
if locks_flag:get("flag") ~= nil then
ngx.log(ngx.ERR,"flag not nil:")
lock_cache:unlock()
return
end
if locks_flag:get("flag") == nil then
ngx.log(ngx.ERR,"flag is nil:")
--获取数据库
db = conn:new_db_handle("loho_openresty")
--用户授权
local ok ,err = db:auth_scram_sha1("yrq","123456")
if not ok then
ngx.log(ngx.ERR, "db select failed:"..err)
return
end
--授权成功,释放锁
local ok, err = lock_cache:unlock()
if not ok then
ngx.log(ngx.ERR,"failed to unlock2: ", err)
return
end
locks_flag:set("flag", true)
end
else
db = conn:new_db_handle("loho_openresty")
end
--other
end