【1】nginx定时器应用

(1)文件目录结构

(2)nginx.conf配置

lua_package_path  "/usr/local/lib/ubcsrvd/lualib/?.lua;;";

init_worker_by_lua_file work/bill_timer.lua;

(3)配置定时器时间

公共配置文件config.lua

-- 公共配置文件

local _M = {}

-- 吃饭定时器(3m)

-- 其他
-- TO DO ....

return _M

(4)定时器应用代码

    -- 定时器应用示例

    local cfg = require("config")
    local new_timer = ngx.timer.at

    local function timer_eat(premature)
        ngx.log(ngx.ERR, ]))
        if not premature then
            ngx.log(ngx.ERR, "timer to do eat .....")
            local rtn, err = new_timer(cfg.eat_timer_interval, timer_eat)
            if not rtn then
                ngx.log(ngx.ERR, "failed to create timer to eat : ", err)
            else
                ngx.log(ngx.ERR, "success to create timer to eat interval(s) : " .. cfg.eat_timer_interval)
            end
        end
    end

     == ngx.worker.id() then
        local rtn, err = new_timer(cfg.eat_timer_interval, timer_eat)
        if not rtn then
            ngx.log(ngx.ERR, "failed to create timer to eat : ", err)
        else
            ngx.log(ngx.ERR, "success to create timer to eat interval(s) : " .. cfg.eat_timer_interval)
        end
    end

(5)0 == ngx.worker.id()

注意:本地nginx启动后,工作进程配置的是3个。

ngx.worker.id() 为0 表示第一个工作进程。即这个定时器由进程1管理执行。

若想启动多个定时器,且分别由不同的进程管理执行,可以使用ngx.worker.id()为1或2等等其他进程。

当然,具体使用那个进程(必须满足:ngx.worker.id() < worker_processes)需要根据nginx.conf配置文件中worker_processes字段具体配置的工作进程个数。

【2】参数premature应用

(1)场景1:启动nginx

(2)场景2:关闭nginx

(3)场景3:重启nginx

(4)场景4:加载nginx配置 reload

(5)其他场景

【3】总结

nginx定时器应用示例如上。

执行定时器任务接口,增加premature参数,结合具体场景分析过程。

Good Good Study, Day Day Up.

顺序 选择 循环 总结

openresty 定时器的更多相关文章

  1. 火焰图分析openresty性能瓶颈

    注:本文操作基于CentOS 系统 准备工作 用wget从https://sourceware.org/systemtap/ftp/releases/下载最新版的systemtap.tar.gz压缩包 ...

  2. Openresty 与 Tengine

    Openresty 与 Tengine Openresty和Tengine基于 Nginx 的两个衍生版本,某种意义上他们都和淘宝有关系,前者是前淘宝工程师agentzh主导开发的,后者是淘宝的一个开 ...

  3. openresty源码剖析——lua代码的执行

    上一篇文章中我们讨论了openresty是如何加载lua代码的 那么加载完成之后的lua代码又是如何执行的呢 ##代码的执行  在init_by_lua等阶段  openresty是在主协程中通过lu ...

  4. OpenResty 在又拍云容器平台中的应用

    大家好,我是又拍云叶靖,今天主要分享 OpenResty 在又拍云容器平台中的应用.目前又拍云有很多产品,其中很多都使用了 OpenResty 技术,比如又拍云的 CDN .网关都是基于 OpenRe ...

  5. 接入层高性能缓存技术nginx+redis利器OpenResty

    一. OpenRestyOpenResty是一个基于 Nginx与 Lua的高性能 Web平台,其内部集成了大量精良的 Lua库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极 ...

  6. OpenResty 最佳实践 (2)

    此文已由作者汤晓静授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. lua 协程与 nginx 事件机制结合 文章前部分用大量篇幅阐述了 lua 和 nginx 的相关知识,包 ...

  7. 基于 OpenResty 的动态服务路由方案

    2019 年 5 月 11 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙武汉站,又拍云首席布道师在活动上做了< 基于 OpenResty ...

  8. openresty 报错:lua entry thread aborted: runtime error

    [1]问题现象 (1)本地openresty系统 (2)报错信息 2019/09/10 08:13:55 [error] 2385#2385: *4 lua entry thread aborted: ...

  9. openresty开发系列24--openresty中lua的引入及使用

    openresty开发系列24--openresty中lua的引入及使用 openresty 引入 lua 一)openresty中nginx引入lua方式 1)xxx_by_lua   ---> ...

随机推荐

  1. 详细解析ASP.NET中Request接收参数乱码原理

    起因:今天早上被同事问了一个问题:说接收到的参数是乱码,让我帮着解决一下. 实际情景: 同事负责的平台是Ext.js框架搭建的,web.config配置文件里配置了全局为“GB2312”编码: < ...

  2. 一张图解释RxJava中的线程控制

    如果调用链中包含多个subscribeOn和observeOn,会是什么情况? 这实际上是一个至关重要的问题,因为在任何情况下,我们都应该弄清楚我们写的每一行代码到底是运行在哪个线程上.这个问题绝对不 ...

  3. Cannot assign requested address 问题

    測试一个简单的TCP套接字程序,client向server请求建立连接然后释放. 在一台主机上同一时候执行两个client时.出现报错"Cannot assign requestedaddr ...

  4. My97DatePicker控件显示时分秒

    方式一: if (!WebCalendar.timeShow) WebCalendar.dateReg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; else ...

  5. Hive设置参数的三种方法

    Hive提供三种可以改变环境变量的方法,分别是:(1).修改${HIVE_HOME}/conf/hive-site.xml配置文件:(2).命令行参数:(3).在已经进入cli时进行参数声明.下面分别 ...

  6. 《深入理解Android 卷III》第七章 深入理解SystemUI

    <深入理解Android 卷III>即将公布,作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分. ...

  7. mysql left join查询没走索引

    SELECT t0.ID as id, t0.`NAME` as name, t0.PHONE as phone, t0.`CITY_CODE` as cityCode, t0.SHOOTING_TI ...

  8. UnrealEngine4 尝鲜

    把官方事例的demo扩展成横版过关视角

  9. 关于汉诺塔,C++代码,代码效果演算

     1.故事介绍 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上依照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘 ...

  10. KingdeeK3-修改单据邮件发送的自定义字段

    只需要执行类似下面语句即可: update ICTemplateentry set FVisForBillType = 63,flookupcls=6 where fid ='P01' and fhe ...