【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. 每天一个linux命令1之scp

    不同的Linux之间copy文件常用有3种方法: 第一种就是ftp,也就是其中一台Linux安装ftpServer,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种方法就是采 ...

  2. NoHttp详解之NoHttp最基本使用(无封装)

    NoHttp详细使用文档,请点我移步! 这里是一个最基本的使用,在项目中也可以直接这样使用,如果想学习更多请移步NoHttp主页: https://github.com/yanzhenjie/NoHt ...

  3. jq和js中click 事件的几种方式总结和click事件的累加问题解决办法

     1:常见的三种绑定click事件: 第一种:$("#click").click(function(){ alert("Hello World  click") ...

  4. linux selenium运行chrome

    chrome版本要和chromedriver版本匹配才能正常运行.

  5. 数据库读写锁的实现(C++)

    一.基本概念 在数据库中,对某数据的两个基本操作为写和读.分布有两种锁控制:排它锁(X锁).共享锁(S锁). 排它锁(x锁):若事务T对数据D加X锁,则其他不论什么事务都不能再对D加不论什么类型的锁. ...

  6. [转载]CentOS修改用户最大进程数

    FROM: http://www.2cto.com/os/201303/192380.html CentOS修改用户最大进程数   一般在/etc/security/limits.conf 中修改最大 ...

  7. JWT笔记

    JWT是一个无状态登录的技术.所谓无状态,是指和传统的session技术相比,服务器端不需要存储用户的信息.在JWT技术中,agent向server请求一个Token. 这个Token由三部分组成,h ...

  8. 转: 通过Servlet生成验证码图片

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(九)—— 通过Servlet生成验证码图片 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedIma ...

  9. jquery给多个span赋值

    因为我想在页面载入完毕后,有几个地方显示当前时间,所以我须要给多个span赋值. span代码的写法例如以下: <span name="currentDate">< ...

  10. Angular 学习笔记——factory

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...