码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • API(十)时间相关的SDK


    一  时间相关的SDK

     ①  时间记录的必要性

    1. 1、'案发'现场的时间点
    2. 2、通过时间判断'性能'
    3. 3、时间的'不准确'性,日志'落盘'时间 --> '缓冲区'导致延迟

    ②   使用哪些日期和时间的函数

    1. 1、lua 标准'时间'函数,函数 'os.time'、'os.date' 和 'os.difftime' 提供了所有日期和时间
    2. 2、在 openresty 的世界里,'不推荐'使用这里的标准时间函数
    3. 3、原因:标准函数通常会引发不止一个昂贵的'系统调用',同时无法进行LuaJIT 编译,对性能影响较大
    4. 4、推荐使用 'ngx_lua 模块'提供的'带缓存'的时间接口,API'如下':
    5. ngx.say('ngx.time()' .. ngx.time())
    6. ngx.say('ngx.now()' .. ngx.now())
    7. ngx.say('ngx.today()' .. ngx.today())
    8. ngx.say('ngx.localtime()' .. ngx.localtime())
    9. ngx.say('ngx.utctime()' .. ngx.utctime())
    10. ngx.say('ngx.cookie_time(1500456075)' .. ngx.cookie_time(1500456075))
    11. ngx.say('ngx.http_time(1500456075)' .. ngx.http_time(1500456075))
    12. ngx.say('os.time()' .. os.time())
    13. ngx.say('------')
    14. ngx.say(ngx.update_time())

    lua标准时间函数

    ②  ngx.req.start_time

    ③  时间类的SDK

    ngx.today

    1. 时间戳: 获取'当前的时间戳'可以使用'如下'两个函数
    2. ​
    3. 1、在'实践'中我们通常使用'ngx.now'获取更'精确 [毫秒级别]'的时间用来计时
    4. 2、想要获取'更高的精确度'需要通过'ffi库'调用系统函数gettimeofday()

    ngx.time

    ngx.now

    1. 1、ngx.localtime、ngx.time、ngx.now等函数获取的时间基于OpenResty'内部缓存'的时间
    2. 备注: 与实际时间相比可能存在'微小'的误差
    3. 需求: 如果想要随时获得'准确的时间'可以先调用函数'ngx.update_time',然后再'调用'时间函数
    4. ngx.update_time() -- 强制'更新'内部缓存的时间
    5. ngx.update_time会使用'系统函数gettimeofday()'强制更新时间,成本较高,除非必要应当尽量少用

    ngx.localtime

    ngx.update_time

    ngx.utctime

    时间戳和字符串格式的时间可以'互相'转换,OpenResty 提供'如下'三个函数:

    ngx.cookie_time

    ngx.http_time

    ngx.parse_http_time

    ④   案例讲解

    ngx.say'同'ngx.print,但是会最后输出一个'换行'符

    ⑤   ngx.sleep

    1. 同步'非阻塞'机制的解读:
    2. 1、ngx.sleep可以'睡眠'任意的时间长度
    3. 2、但'不会阻塞'整个服,这时OpenResty会基于协程机制转而'处理其他'的请求
    4. 3、等睡眠时间到再'回头'继续执行ngx.sleep后续的代码
    5. 注:不能在init_*、set_by_lua/header、body_ filter_by_lua/log_by_lua等阶段里'调用'

    ⑥   其它参考

    openresty的日志处理

    Openresty踩坑日志 -- 阻塞问题

    *_by_lua_block {} 正则的转义

    1. ngx.timer.every 新技能: 定时扫描'本地文件'是否有变动,发现特定文件,则执行'shell'脚本
    2. ngx.timer.at 启动一次任务,执行'crontab'定时任务,脱离'openresty'的管理

    OpenResty、Lapis、Luarocks、OpenSSL全面升级

    lua文章汇总

    正确的记录日志

    perlre正则

  • 相关阅读:
    字节跳动开源Linux 内核网络抓包工具 netcap
    11988 - Broken Keyboard (a.k.a. Beiju Text) (UVA)
    JavaSE 第七章 面向对象基础(下)接口&内部类&包装类&注解
    Altium Designer实用系列(一)----原理图导入PCB、PCB板子外形、多层板绘制等
    【OCR】基于Encoder-Decoder的文本识别
    AI视频分析技术的常用开源模型及TSINGSEE青犀AI视频识别分析能力介绍
    RocketMQ 关于 No route info of this topic 问题
    Vue2简单使用及相关基础知识概念(适合小白入门,看完就能上手)
    iOS 关于UIAlertController常见使用方法
    使用MVVM Swift UIKit RxSwift 写一个SpaceX 发射计划APP
  • 原文地址:https://blog.csdn.net/wzj_110/article/details/133021046
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号