美文网首页
OpenResty中请求返回后继续执行

OpenResty中请求返回后继续执行

作者: Uzero | 来源:发表于2016-12-11 13:58 被阅读0次

接下来说的这个小技巧特别实用。在一些请求中,可能会做一些日志的推送、用户数据的统计、返回给终端数据等相关的操作。而这些操作,即使你用异步非阻塞的方式,在终端看来,也是会影响速度的。这个和我们的原则:终端请求,需要用最快的速度返回给终端,是冲突的。

这时候,最理想的是,获取完给终端返回的数据后,就断开连接,后面的日志和统计等动作,在断开连接后,后台继续完成即可。

怎么做到呢?就要用到这个API了----》ngx.eof()

ngx.eof() 它可以即时关闭连接,把数据返回给终端,后面的操作【比如数据库】还会运行 

来个简单的demo:

ngx.say(123)

ngx.eof()

ngx.say(456)

终端只看到浏览器输出123,为了证实代码还会继续运行,我们加上数据库的操作吧

ngx.say("1234 1234 唱首歌")

ngx.eof()

local mysql = require "mysql_redis.mysql_pool"

local sql      = "insert into center_informInterface_data (str , out_trade_no , payment_type , time) values ('out_trade_no-18270821234567' , '18270821234567' , 'ybl' , '2016-12-11 13:52:50')"

local bool , res , sqlerr = mysql:query(sql)

if bool then

        ngx.say("insert into ok")

else

        ngx.say("insert into fail")

end

浏览器打印:1234 1234 唱首歌

mysql数据库增加行:34    out_trade_no-18270826055   18270826055    ybl    2016-12-11 13:52:50

说明:你不能任性的把阻塞的操作加入代码,即使在ngx.eof()之后。虽然已经返回了终端的请求,但是,nginx的worker还在被你占用。所以在keep alive的情况下,本次请求的总时间,会把上一次eof()之后的时间加上。如果你加入了阻塞的代码,nginx的高并发就是空谈。

相关文章

  • OpenResty中请求返回后继续执行

    接下来说的这个小技巧特别实用。在一些请求中,可能会做一些日志的推送、用户数据的统计、返回给终端数据等相关的操作。而...

  • HTTP协议状态码

    表示临时响应并需要请求者继续执行操作的状态代码。 代码说明 100(继续)请求者应当继续提出请求。服务器返回此代...

  • 状态码

    1 开头 表示临时响应,并需要请求者继续执行操作的状态码 100(继续):请求者应当继续提出请求,服务器返回此状态...

  • Android网络请求返回200 201 404 500等代表的

    1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码。100(继续)请求者应当继续提出请求。服务器返回...

  • FutureTask与线程池的应用

    需求背景:第三方请求服务后,异步处理请求,先返回请求方请求成功,后开启线程执行task并获取执行后的结果。故选用F...

  • iOS 等待异步操作后 return 值

    需求是:一个函数 等AFNetwork 网络 请求完成后,修改返回值,并继续执行函数,并返回值. 关键的一步是设...

  • [iOS]循环网络请求顺序执行(信号量)

    背景 今天在开发过程中遇到需要进行循环网络请求,大体需求如下:网络请求A返回成功后,继续调用网络请求A(即:A—>...

  • php 异常处理try-catch-finally

    try 中 return 后 finally 会继续执行,如果 finally 中也有return,则最终返回值为...

  • OpenResty 在 ubuntu18 上的安装

    OpenResty 在 ubuntu18 上的安装 安装完成后, openresty 已自动启动. 如需关闭,执行...

  • iOS 网络请求顺序处理(信号量,group)

    一、日常开发中,会经常遇到这样的需求: 网络请求A返回成功后,调用网络请求B,网络请求B结果返回成功后调用网络请求...

网友评论

      本文标题:OpenResty中请求返回后继续执行

      本文链接:https://www.haomeiwen.com/subject/drkpmttx.html