Heim  >  Artikel  >  Backend-Entwicklung  >  Openresty Notes – Zugriff auf Memcache und MySQL

Openresty Notes – Zugriff auf Memcache und MySQL

WBOY
WBOYOriginal
2016-08-08 09:32:001096Durchsuche
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
			';
		}
    }
}

Das Obige stellt die Openresty-Notizen vor – Zugriff auf Memcache und MySQL, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn