首页 > 其他分享 >openresty package path

openresty package path

时间:2022-12-15 19:33:49浏览次数:64  
标签:www package require lua openresty path data

openresty lua_package_path 是整个openresty最基础的功能,不理解
path就无法做项目,更无法写框架。

先看下文档lua_package_path

https://github.com/openresty/lua-nginx-module#lua_package_path
Sets the Lua module search path used by scripts specified by set_by_lua, content_by_lua and others. The path string is in standard Lua path form, and ;; can be used to stand for the original search paths.
设置由set_by_lua,content_by_lua等指定的脚本使用的Lua C模块搜索路径。 cpath字符串采用标准的Lua cpath格式,并且;; 可以用来代表原始的cpath。
相当于PHP的include_path,告诉应用加载程序的时候在哪个目录加载。;; 相当于系统或者框架的路径

lua_package_path的几种用法

设置path将项目框架代码加进lua_package_path

lua_package_path '/data/www/framework/?.lua;;';
表示将 /data/www/framework/ 加进lua的require搜索目录里面。加入我写了一个utils.lua 放到/data/www/framework/里面,使用的时候只需要
local utils = require "utils"
发现每个lua_package_path都是;;结尾的,主要是;;表示原始的path路径,如果没有;; resty 的原生的框架代码就无法 require 进来。
这样的话,问题就来了,如果我服务器上有ABCDEF等很多的项目,那我岂不是得
lua_package_path '/data/www/A/?.lua;/data/www/B/?.lua;/data/www/C/?.lua;/data/www/D/?.lua;;'这样很多个项目。而且不同的项目相同的文件名怎么处理,岂不是乱了。确实会有这个问题。所以说下我们第二个方法

将整个服务目录都加进require搜索目录,使用的时候用项目名称区分

lua_package_path '/?.lua;;‘
A项目的conf配置里面加上项目名称
set $app_root '/data/www/test_test_com/';
使用的时候require app_root . "application.controller.testController"
这样就很容易解决多项目冲突的问题。

package.path 的使用

如果只是想暂时的修改搜索路径,或者研发测试的有时候想用prod的代码有事想用dev的代码。那么可以使用package.path变量
package.path = package.path .. ";/?.lua;/data/test/?.lua;;"
看到有的框架也这么使用。临时这么使用没问题。如果生产的也都这么使用有问题的,试想下每个请求都做一次该操作,会导致package.path这个变量越来越大,占用的内存越来越多,影响服务器内存指标。

标签:www,package,require,lua,openresty,path,data
From: https://www.cnblogs.com/feixiangmanon/p/16985873.html

相关文章

  • vercell部署失败 提示 no such file or directory, open '/vercel/path0/
    这可能是代码中引入的文件名和远端代码库文件名大小写不一致造成的,因为git推送默认不区分大小写,在第一次推送到远端的文件名是小写,后来在本地修改成大写再次推送到远端代......
  • VSCode-Path_to_shell_executable的问题
    VSCode:Theterminalprocessfailedtolaunch:Pathtoshellexecutable"D:\code\g++"doesnotexist的问题下午使用VSCode编译一个cpp文件,突然报了这样一个问......
  • Python14 文件读写和编码&OS、path模块的使用
    编码文件读写操作#作者:咸瑜file=open("text.txt","r",encoding="utf-8")print(file.readlines())#['姓名:咸瑜\n','年龄:18\n','籍贯:广东·惠州']file.clo......
  • 高性能 Jsonpath 框架,Snack3 3.2.50 发布
    Snack3,一个高性能的JsonPath框架借鉴了Javascript所有变量由var申明,及Xmldom一切都是Node的设计。其下一切数据都以ONode表示,ONode也即Onenode之意,代表任何......
  • 前端开发系列077-Node篇之package
    title:'前端开发系列077-Node篇之package'tags:-Node系列categories:[]date:2018-07-2423:20:13本文输出Node中和包有关的基本内容。一、Node中的模块和包......
  • 【Node.JS 】path路径模块
      往期文章​​【Node.JS练习】考试成绩整理​​​​【Node.JS】buffer类缓冲区​​​​【Node.JS】事件的绑定与触发​​​​【Node.JS】写入文件内容​​​​【Node.JS......
  • CSS clip-path 属性
    属性定义及使用说明clip-path属性使用裁剪方式创建元素的可显示区域。区域内的部分显示,区域外的隐藏。可以指定一些特定形状。注意: clip-path属性将替换已弃用的clip......
  • linux环境变量LD_LIBRARY_PATH
    LD_LIBRARY_PATH是Linux系统下的环境变量名,类似于Path(设置可执行文件的搜索路径)。作用:用于指定查找共享库(动态链接库)时除了默认路径(./lib和./usr/lib)之外的其他路径。......
  • package 版本号说明
    在package.json文件中经常会见到类似^0.1.0,~0.1.0,0.1.0和>=之类的限定符的版本号。 版本号的格式:X.Y.Z,分别代表主版本号、次版本号及补丁版本号;含义: X:向下不兼容,大......
  • [集训队互测2022]Path 题解
    考虑对于两条路径\(I_i,I_j\)计算可以产生贡献的\(I\)的数量。分类讨论:1.\(I_i,I_j\)端点不相交可以发现\(I_i\subseteqI,I_j\subseteqI\)。对于任意一条路径\(I_i......