首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

openresty源码剖析——lua代码的加载

##Openresty是什么 OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,通过把lua嵌入到Nginx中,使得我们可以用轻巧的lua语言进行nginx的相关开发,处理高并发...而*_by_lua_block、*_by_lua和init_by_lua_file里的代码(init_by_lua阶段和具体请求无关),如果修改的内容涉及这几个,仍需要通过reload来更新代码 那openresty...不分配新的lua_state,这样所有请求都会使用ngx_http_lua_module模块的lua_state 300 } 301 302  276行 如果关闭了lua代码缓存,那么openresty...lua_state,这样请求来临的时候在全局变量table中找不到对应的代码缓存,需要到下一步ngx_http_lua_clfactory_loadfile中读取文件加载代码 如果代码缓存打开的时候,openresty...125行,因为代码块是 return function() … end包裹的,所以在56行需要再调用lua_pcall执行以获得返回的函数 ##总结 1、当lua_code_cache off的情况下,openresty

2.9K80
您找到你想要的搜索结果了吗?
是的
没有找到

openresty源码剖析——lua代码的执行

上一篇文章中(https://cloud.tencent.com/developer/article/1037840)我们讨论了openresty是如何加载lua代码的 那么加载完成之后的lua代码又是如何执行的呢...##代码的执行  在init_by_lua等阶段  openresty是在主协程中通过lua_pcall直接执行lua代码 而在access_by_lua  content_by_lua等阶段中,openresty...LUA_REGISTRYINDEX[‘ngx_http_lua_code_coroutines_key’] 因为lua中协程也是GC的对象,会被lua系统进行垃圾回收,为了保证挂起的协程不会被GC掉,openresty...是在主协程中通过lua_pcall直接执行lua代码,而在access_by_lua、content_by_lua等阶段中,openresty创建一个新的协程,通过lua_resume执行lua代码 2...、openresty将要延后执行的协程放入链表中,在*_run_posted_threads函数中通过调用ngx_http_lua_run_thread进行执行

2.4K70

OpenResty 101

本文是 OpenResty 的初学者指南,提供一些资料的汇总。...Asked Questions Lua Unofficial FAQ (uFAQ) 具体到 OpenResty 的话,推荐阅读 OpenResty 作者 agentzh 撰写的 Nginx 教程,有中文版和英文版...当你用 OpenResty 写项目的时候,最好站在巨人的肩膀上,多使用一些成熟的开源组件,不过需要注意有些 Lua 库可能并不兼容 OpenResty 的非堵塞特性,在你选择的时候务必留心,比如 LuaRocks...中的应用(上) LuaJIT FFI 介绍,及其在 OpenResty 中的应用(下) 如上几篇文章的作者都是 spacewander,他写过不少 Openresty 方面的好东西: OpenResty...单元测试实践 在 OpenResty 中使用正则 如何编写正确且高效的 OpenResty 应用 在 OpenResty 里实现进程间通讯 很多开源项目也会分享直接开发 OpenResty 的经验,比如

1K30
领券