openresty 定时器
【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 定时器的更多相关文章
- 火焰图分析openresty性能瓶颈
注:本文操作基于CentOS 系统 准备工作 用wget从https://sourceware.org/systemtap/ftp/releases/下载最新版的systemtap.tar.gz压缩包 ...
- Openresty 与 Tengine
Openresty 与 Tengine Openresty和Tengine基于 Nginx 的两个衍生版本,某种意义上他们都和淘宝有关系,前者是前淘宝工程师agentzh主导开发的,后者是淘宝的一个开 ...
- openresty源码剖析——lua代码的执行
上一篇文章中我们讨论了openresty是如何加载lua代码的 那么加载完成之后的lua代码又是如何执行的呢 ##代码的执行 在init_by_lua等阶段 openresty是在主协程中通过lu ...
- OpenResty 在又拍云容器平台中的应用
大家好,我是又拍云叶靖,今天主要分享 OpenResty 在又拍云容器平台中的应用.目前又拍云有很多产品,其中很多都使用了 OpenResty 技术,比如又拍云的 CDN .网关都是基于 OpenRe ...
- 接入层高性能缓存技术nginx+redis利器OpenResty
一. OpenRestyOpenResty是一个基于 Nginx与 Lua的高性能 Web平台,其内部集成了大量精良的 Lua库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极 ...
- OpenResty 最佳实践 (2)
此文已由作者汤晓静授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. lua 协程与 nginx 事件机制结合 文章前部分用大量篇幅阐述了 lua 和 nginx 的相关知识,包 ...
- 基于 OpenResty 的动态服务路由方案
2019 年 5 月 11 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙武汉站,又拍云首席布道师在活动上做了< 基于 OpenResty ...
- 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: ...
- openresty开发系列24--openresty中lua的引入及使用
openresty开发系列24--openresty中lua的引入及使用 openresty 引入 lua 一)openresty中nginx引入lua方式 1)xxx_by_lua ---> ...
随机推荐
- How to: Launch the Debugger Automatically
Sometimes, you may need to debug the startup code for an application that is launched by another pro ...
- vsftp 服务配置
在CentOS或者RedHat Linux上有自带的ftp软件叫做vsftpd (very serure ftp) 搭建vsftpd 服务 yum 安装需要用两个包:vsftpd 和 db4-util ...
- 在eclipse中使用Lombok
1.下载Lombok.jar http://projectlombok.googlecode.com/files/lombok.jar2.运行Lombok.jar: java -jar D:\001 ...
- 前端存储之indexedDB
在前一个阶段的工作中,项目组要开发一个平台,为了做出更好的用户体验,实现快速.高质量的交互,从而更快得到用户的反馈,要求在前端把数据存储起来,之后我去研究了下现在比较流行的前端存储数据库,找到了ind ...
- es6 webpack转es5
更新时间: 2018-7-31 首次更新. 先生成package.json npm init -y 再安装以下npm插件 npm i babel-core babel-loader babel-pre ...
- Jmeter启动报注册表警告
启动Jmeter后,控制台出现如下的警告: 主要出现的原因是: java.util.prefs.WindowsPreferences需要保存信息到HKEY_LOCAL_MACHINE\Software ...
- MySQL几个性能指标
近期参加了一个DBA MySQL的分享,主要从MySQL的性能指标分析.同步及运维三个方面分享一些经验,其中,一些经验值还是值得记录下来的: 对于一个MySQL实例,CRUD上限经验值如下: Quer ...
- 算法练习--ABCD*E=DCBA
//1.ABCD * E = DBCA//2.A,B,C,D {0-9} , E {1-9}//3.A,B,C,D,E all different var existSameN = function ...
- Unity3d修炼之路:游戏开发中,3d数学知识的练习【1】(不断更新.......)
#pragma strict public var m_pA : Vector3 = new Vector3(2.0f, 4.0f, 0.0f); public var m_pB : Vector3 ...
- C语言中使用库函数解析命令行参数
在编写需要命令行参数的C程序的时候,往往我们需要先解析命令行参数,然后根据这些参数来启动我们的程序. C的库函数中提供了两个函数可以用来帮助我们解析命令行参数:getopt.getopt_long. ...