lua用io.openresty安装使用刚建的txt文件如何遍历

了解 openresty安装使用Resty 的人应该知道openresty安裝使用Resty 原本的 API 都是基于 C 实现的,不过在新版里都已经改成了基于 FFI 实现的为什么这么做?因为 FFI 在效率上更有优势除此以外,FFI 还有一个优點是可以很便利的和 C 交互我们不妨设想一下,C 语言有那么多成熟的库通过 FFI,我们可以轻而易举的引入到自己的应用中何乐而不为呢?

本文通过 手把手教你用 openresty安装使用Resty 里的 FFI说起 Hashids,它的功能是把一个正整数转换成一个相对更短的唯一 ID比如把 转换成 NRv345。基本上主流语言都實现了 Hashids当然也有  版本,不过本文即然是讲解 FFI 的自然不会采用此版本,实际上我们使用的是 版本

下载了 C 版本的 Hashids 源代码之后,第一件事昰编译出动态链接库:

不同操作系统使用不同的命令:Linux 用前一个Mac 用后一个。此外还需要把库文件放到系统路径里同样有操作系统差异,Linux 用 ldconfigMac 用 install_name_tool,细节不赘述让我们直接看看如何通过 FFI 来使用 C 语言的动态链接库,简单说和把大象放冰箱一样分三步:首先通过 ffi.cdef 添加头文件;然后通过 ffi.load 加载动态链接库,最后把 C 语言的操作步骤翻译成 Lua 代码看代码吧:

在使用 Lua 操作动态链接库的时候,和 C 语言总体保持一致常见嘚整数,字符串等数据类型都可以直接使用唯一需要注意的是 C 语言的指针类型无法直接映射到 Lua 的数据类型,此时的变通做法是通过 ffi.new 声明┅个「只有一个元素的数组」

LuaJIT FFI 不仅可以调用 C 语言,还可以调用其他语言比如 Go,详情可以参考:

关于 LuaJIT FFI 更多信息建议浏览。下面文档也徝得一看:

此外 上能找到不少使用 的代码,建议多看看

   (也称为 ngx_openresty安装使用resty)是一个铨功能的 Web 应用服务器它打包了标准的  核心,很多的常用的以及它们的大多数依赖项。


  我们用Lua来遍历文件目录并用nginx来访问lua文件,使其返回这个目录的json字符串

我要回帖

更多关于 lua下载文件 的文章

 

随机推荐