您当前的位置: 首页 > 

鱼儿-1226

暂无认证

  • 1浏览

    0关注

    1100博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

lua 8小时时差

鱼儿-1226 发布时间:2020-09-14 10:31:58 ,浏览量:1

 公司的棋牌游戏菜单打算采用lua来从mysql数据库中取出,根据各种蛋疼的规则,然后生成json返回给客户端,这样客户端只要解析json生成菜单树即可,排序,节点属性,显示等等一切逻辑都被记录在json字符串中,由于数据库中记录的菜单数据比较原始,所以lua承担了比较繁重的逻辑和重新组合节点的任务,捎带还要有缓存支持。

首先说明下为什么会选择lua去生成这个json字符串,最主要的原因当然是性能问题,luajit可以算是最快的脚本语言了,同时配合nginx的高效,我们可以无状态的横向部署多台nginx作负载均衡,毕竟对于几万人在线的公司棋牌游戏菜单获取压力也着实不小。

其次因为之前公司很多对外api前端逻辑和下载统计等都是用lua来处理的,其性能和稳定性都不错,也算尝到了甜头,所以这次菜单的功能也顺理成章的使用lua来处理了。

但是这次游戏菜单会根据不同的站点生成不同的json,还有其他一些逻辑,节点的父类子类总之比较麻烦,所以我在编写这个lua脚本时也遇到了一些坑。

1、lua字符串转时间,时间转字符串

在编写整个脚本时,遇到的第一个问题就是lua对时间和字符串的互转,下面是一个用到的时间戳格式化当前时间的代码:

local now = os.date(“%Y-%m-%d %H:%M:%S”, os.time())

时间戳转时间字符串还算顺利,可是当我想通过从数据库查询出的时间字符串转换成lua的时间类型时就蛋疼了,搜了一会发现都要自己重新实现,最终在github上发现了一个外国朋友写的date.lua类,非常不错分享给大家:

项目地址:https://github.com/Tieske/date

把文件夹下的date.lua放入openresty定义的lib目录中,直接requrie即可使用,非常方便,他也拥有很多api功能,具体请参阅github项目帮助文档。

local dateLib = require “date”

updatetime = dateLib(tonumber(updatetime)):tolocal() — 这边比较坑,要转成local,否则差8小时

..

local writetime = dateLib(v[‘writetime’])

这样我就可以将时间戳或时间字符串转换成lua的date类型了,同时date类型之间还能够进行”>”或”

关注
打赏
1604459285
查看更多评论
立即登录/注册

微信扫码登录

0.2057s