OpenResty 大话lua与c语言的桥梁之luaJIT的ffi库(下)

luaJIT的FFI库有很多有用的函数,除了上文介绍的ffi.cdef,ffi.C和ffi.load外,还有以下常用的函数,听我一一道来

1、ffi.new

  • 功能:判断一个cdata对象

  • 用法:ffi.new(ct, elem?, init?)

  • 参数:

    • ct为C语言的数据类型,可以是基本数据类型,也可以是结构体等复合类型,当然也包括一些类型别名,如uin64_t
    • elem为元素个数,一般用于数组中

OpenResty 大话lua与c语言的桥梁之luaJIT的ffi库(上)

FFI库是lua与C语言的桥梁,可以在lua代码中直接使用C函数或者C数据结构,而不需要通过lua的C扩展来实现,确实很方便。

一、使用FFI库的步骤

  • 1、加载FFI模块

  • 2、使用ffi.cdef声明C函数或者C的数据结构

  • 3、使用ffi模块其他函数

二、FFI库的相关词汇

  • cdecl:一个抽象的C类型定义(其实是一个lua字符串)
  • ctype:一个C类型对象
  • cdata:一个C数据对象
  • ct:一个C

OpenResty nginx for lua api之获取请求中的参数

一、通过url获取

1、通过分析url中的规则获取(类似于分析请求路由)

其实是通过在ngx中分析url,将url中的代表特殊含义的部分设置一个自定义是变量中,再通过ngx.var.变量名获取

例如:新闻的详情页面,可能是http://localhost:8000/detail/12345.html

这个12345可能代表的是新闻的ID,那么:

nginx配置中可以这么写:

  1. location /det

OpenResty 搭建openresty开发环境即sublime中的openresty插件的使用

目前市面上的关于openresty的编辑器一般有两类:一类是lua的编辑器;另外一类是web开发的编辑器+openresty插件

本文将介绍如何使用sublime编辑器来开发openresty。

一、安装sublime

sublime是一个开源而且是跨平台的编辑器,安装步骤很简单,在此就不再赘述了。

下载地址:http://www.sublimetext.com/

二、安装sublime packa