【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. Mac上Git的安装与简单使用

    一.安装: Git下载地址: http://git-scm.com/downloads/ 下载Git.配置Git: http://blog.csdn.net/reactor1379/article/d ...

  2. jquery 遍历取值问题

    方法一:将a定义在外边 var a = new Array; var i = 0 ; $("img").each(function(){ a[i] = $(this).attr(& ...

  3. 详细理解javascript中的强制类型转换

    将值从一种类型转换为另一种类型通常称为类型转换,这是显式的情况:隐式的情况称为强制类型转换,JavaScript 中的强制类型转换总是返回标量基本类型值,如字符串.数字和布尔值. 如何理解: 类型转换 ...

  4. 新人补钙系列教程之:AS3 与 PHP 简单通信基础

    package { import flash.display.Loader; import flash.events.Event; import flash.net.URLLoader; import ...

  5. Linux&Windows下批量修改文件后缀

    Linux下从给定文件夹中找出小于1M的文件,并批量添加.gif后缀 先看一下文件夹下的目录的格式 ll -Sh -rw-rw-r-- 1 yangkun yangkun 17M May 10 15: ...

  6. 全栈技术经理——团队管理:每周问问你的团队这这些问题 V1.0

    全栈技术经理--团队管理:每周问问你的团队这这些问题 V1.0 1.本周取得了哪些进展? ​ 通过回答这个问题可以让员工庆祝甚至夸耀一些自己的成果,包括那些跟最高优先级不相干而被忽视的小事情.借此你也 ...

  7. 01.Hello Node.js

    程序下载:https://files.cnblogs.com/files/xiandedanteng/helloNodejs.rar 关键代码: var http=require('http'); v ...

  8. PS如何拉倒影效果

    1 复制图形(一般是文字)并垂直翻转得到倒影的初步样子(最好倾斜一下,看起来逼真一些)就像下面的迅雷的样子.记住要栅格化文字. 2 用魔棒工具抠除原来的颜色,只剩下空的选区.   3 拉渐变

  9. 有关CGRectGetMinX,CGRectGetMidX,CGRectGetMaxX图解

    CGRect size = CGRectMake(20, 20, 400, 400); //矩形中最小x值 ,size.x CGRectGetMinX(size) = 20; //矩形中最小y值 ,s ...

  10. HDU 5308 规律+模拟

    给出N个数字N,要把全部数字用完.使用+-*/最后变为24.中间运算能够有有浮点数 对于1-14直接打表 15以上的能够通过13个同样数字得到24.然后使后面的数所有运算为0相加就可以 贴一发官方题解 ...