package.loaded.xx=nil 是把这个模块卸载了。考虑到 NGINX 多 worker 的情况,一般的玩法是这样的:
1、暴露一个指定 ip 或者本机才能访问的 API,用来把某个模块的最新代码和版本号更新到 shared dict 中;
2、在 package.loaders 里面新建一个 loader,判断版本号后用 loadstring 加载最新代码;
3、新建一个定期轮训的 timer,发现正在使用模块的版本号和 shared dict 中的不一致,就用 package.loaded.xx=nil 卸载掉;