openresty 定时器
2024-08-26 04:08:35
【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.
顺序 选择 循环 总结
最新文章
- 完美解决,浏览器下拉显示网址问题 | 完美解决,使用原生 scroll 写下拉刷新
- Web开发者需养成的好习惯
- Html标签列表【转】
- linux下 tar解压 gz解压 bz2等各种解压文件使用方法
- SaltStack之无Master和多Master(九)
- OSIC Performance Bot
- 为什么玩VR眼镜会头晕?
- HTML5学习(六)---------SVG 与Canvas
- 《Thinking In Java第四版》拾遗
- Scala学习文档-样本类与模式匹配(match,case,Option)
- MySql 链接url 参数详解
- Android: Failure [INSTALL_FAILED_DEXOPT] and Failure [INSTALL_FAILED_UID_CHANGED] 解决方案
- 深入Web请求过程
- JAVA网络编程TCP通信
- 在C#中几种常见数组复制方法的效率对比
- 你学会UI设计了吗?
- js修改父子json格式成树状结构格式
- Android ORC文字识别之识别身份证号等(附源码)
- 从零开始学spring cloud(十一) -------- hystrix监控
- 《数据仓库ETL工具箱》读书笔记