• OpenResty应用-数据库访问


    OpenResty应用

    OpenResty是一个基于Ngin与Lua的高性能Web平台,集成了大量Lua库、第三方模块及大多数依赖项,可以方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。

    访问Mysql

    参考:http://t.zoukankan.com/forezp-p-9852101.html

    数据库ddd_cargo表中数据:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yYE0nLsX-1661495522973)(E:\pic\image-20220826101932706.png)]

    Lua脚本askmysql.lua如下:

    local function close_db(db)
    		if not db then
    				return
    			end
    			db:close()
    		end	
    
    local mysql = require("resty.mysql")  
    local db, err = mysql:new()  
    if not db then  
        ngx.say("new mysql error : ", err)  
        return  
    end  
    db:set_timeout(1000)
    local props = {  
        host = "127.0.0.1",  
        port = 3306,  
        database = "sq-test",  
        user = "root",  
        password = "123456"  
    }  
    local res, err, errno, sqlstate = db:connect(props)
    if not res then  
       ngx.say("connect to mysql error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)  
       return close_db(db)  
    end    
    local select_sql = "select id,description from ddd_cargo"
    res, err, errno, sqlstate = db:query(select_sql)
    
    if not res then	
    	ngx.say("select rows error:",err,",errno:",errno,",sqlstate:",sqlstate)
    	return close_db(db)
    end
    for i, row in ipairs(res) do  
       for name, value in pairs(row) do  
         ngx.say("row details-", i, " : ", name, ":", value)  	 
       end  
       ngx.say("
    "
    ) end close_db(db)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    在nginx.conf中配置访问地址:

    http {
        include       mime.types;
        default_type  application/octet-stream;
    
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
    #access_log  logs/access.log  main;
    
    sendfile        on;
    #tcp_nopush     on;
    
    #keepalive_timeout  0;
    keepalive_timeout  65;
    
    #gzip  on;
    
    # test demon by sunquan
     server {
        listen       9090;
    	location /test1 {
    			default_type text/html;
    			charset utf-8;
    			#content_by_lua 'ngx.say("

    Hello,World!

    ")'; content_by_lua_file testcode/askmysql.lua; } } .....
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    访问地址:http://localhost:9090/test1,可以看到数据库中的数据已经能够正常返回

    在这里插入图片描述

    针对上述的打印完善一下,

    for i, row in ipairs(res) do  
       ngx.say("row details-",i)
       for name, value in pairs(row) do  
         ngx.say(name, ":", value,"\t")  	 
       end  
       ngx.say("
    "
    ) end
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    nginx.exe -s stop 并重启OpenResty

    在这里插入图片描述

    其它应用场景

    http://www.gosanye.com/post/10951.html
    https://www.jianshu.com/p/b2dcd5d02e76
    https://blog.csdn.net/chundian0058/article/details/100820145
    https://www.w3cschool.cn/openresty1/openresty-%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF.html

  • 相关阅读:
    常见面试题-HashMap源码
    限制Domain Admin登录非域控服务器和用户计算机
    HTML静态网页作业——基于html+css+javascript+jquery+bootstarp响应式成都家乡介绍网页
    整数因数分解方法
    一文全部理解Javascript中的变量
    TiKV 源码分析之 PointGet
    Source must not be null
    使用 Spark Java 框架构建 API
    Java实战项目之图书借阅管理系统【源码+课后指导】
    MKD调试下载的时候提示:Contents mismatch at: xxxxxxxxH (Flash=xxH Required=xxH)
  • 原文地址:https://blog.csdn.net/sunquan291/article/details/126542957