worker_processes 1; error_log logs/error.log; events { worker_connections 1024; } http { server { listen 8080; location /hello_world { default_type text/html; content_by_lua ' ngx.say("<p>hello, world</p>") '; } location /memcache_test { default_type text/plain; content_by_lua ' --args local args = ngx.req.get_uri_args() if (args["key"] == nil) then return end --new local memcached = require "resty.memcached" local memc , err = memcached:new() if not memc then ngx.say("faild to init memc:" , err) return end memc:set_timeout(1000) --connect local ok , err = memc:connect("127.0.0.1" , 11211) if not ok then ngx.say("faild to connect:" , err) return end --get local res , flags , err = memc:get(args["key"]) if err then ngx.say("faild to get: " , err) return end if res then ngx.say("get key [" .. args["key"] .. "] " .. "[" .. res .. "]") else ngx.say("not get key [" .. args["key"] .. "]") end --set local ok , err = memc:set(args["key"] , args["key"]) if ok then ngx.say("set ok") end '; } location /mysql_test{ default_type text/plain; content_by_lua ' local mysql = require "resty.mysql" --new local db , err = mysql:new() if not db then ngx.say("faild to init mysql: " , err) return end db:set_timeout(1000) --connect local ok , err , errno , sqlstate = db:connect{ host = "127.0.0.1", port = 3306, database = "test", user = "root", password = "123456", max_packet_size = 1024 * 1024 } if not ok then ngx.say("failed to connect to mysql : ", err, ": ", errno, " ", sqlstate) return end ngx.say("connected to mysql") --create table local sql = [[create table if not exists `test`( `id` int(11) primary key not null auto_increment, `name` varchar(100) not null default \'\' ) engine=Innodb default charset=utf8]] local res , err , errno , sqlstate = db:query(sql) if not res then ngx.say("create table error: ", err, ": ", errno, ": ", sqlstate, ".") return end --insert sql = "insert into `test` (`name`) values (\'fish\')" local res , err , errno , sqlstate = db:query(sql) if not res then ngx.say("insert error: ", err, ": ", errno, ": ", sqlstate, ".") return end --select sql = "select * from `test`" local res , err , errno , sqlstate = db:query(sql) if not res then ngx.say("select error: ", err, ": ", errno, ": ", sqlstate, ".") return end local cjson = require "cjson" ngx.say(cjson.encode(res)) --delete sql = "delete from `test`" local res , err , errno , sqlstate = db:query(sql) if not res then ngx.say("delete error: ", err, ": ", errno, ": ", sqlstate, ".") return end '; } } }
위 내용을 포함하여 openresty 노트 - memcache 및 mysql에 액세스하는 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.