nginx下lua的實現機制、Lua錯誤處理、面向對象

nginx下lua的實現機制

nginx+lua概述

nginx:功能由模塊提供。?http模塊、events模塊,mail模塊。

處理http請求的時候,可以利用模塊做一些功能:eg:登錄校驗,js合并,數據庫訪問,鑒權。?c或者c++。

lua的解釋器,集成到了nginx當中:ngx_lua模塊

lua內部,內建了協程。

nginx啟動流程

工作流程:啟動流程,管理進程流程,工作進程流程。

啟動流程

1。框架程序的啟動。創建模塊的過程。

2。模塊的啟動。模塊的啟動和初始化的過程。

./nginx

1。?nginx接受啟動參數、解析參數。

2。判斷是否有?-s。如果有-s重新加載 新的配置文件。

3。調用核心模塊create_conf方法,基于配置文件,創建數據結構(用于存儲配置)做初始化。

4。解析nginx.conf配置項,存到上面的數據結構中。

5。調用每個模塊的init_conf方法,進行初始化。

6。如果配置文件中,有關于日志,緩存等的配置,對這些文件進行創建。

7。按照配置,開始監聽端口,一般比如http模塊,stream模塊。

8。調用所有模塊的init_module方法,根據配置信息進行初始化模塊。

9。如果配置文件配置,nginx為master模式。創建管理進程。

?

10。管理進程根據配置的工作進程數,將所有進程分叉,讓他們獨立接受用戶的請求。

11。管理進程調用模的init_process方法,這樣工作進程就啟動了。工作進程進入自己的消息循環?中,開始等待處理用戶的請求。

管理進程和工作進程

管理進程:管理工作進程。自己實現:重啟服務,平滑升級( -s?reload),更換日志文件,動態加?載配置。不處理用戶的請求。

工作進程:干活的,處理用戶的請求,協調各個模塊完成任務。由 管理進程管理。

nginx+lua請求處理流程

ngx_lua,生效于 工作進程。

模型:一個請求,一個協程。

錯誤處理

語法錯誤:

-- 錯誤處理?a==10

for?a?=?1,10?print(a)

end

程序無法運行。

運行錯誤:

錯誤處理 assert和error

assertfunction?add(a,b)assert(b,"b是nil")endadd(1)assert:第一個參數為true,不輸出第二個參數。?第一個參數為false,輸出第二個參數。errorfunction?add(a,b)??if(not?b) thenerror("報error了")endprint("正常執行")?endadd(1,"a")當error和assert,觸發錯誤時,程序退出。

錯誤處理pcall

pcall(要執行的函數,函數需要的參數)

如果函數執行沒問題,返回true????如果函數執行有問題,返回false。

function?add(a,b)?c?=?a+b

print("正常執行")?end

if?pcall(add,1)?then

print("add?正常")?else

print("add?錯誤")?end

print("主程序")

錯誤處理xpcall

function?testXpcall()

c?=?1+5?end

function?testErrorHandle(error)

print("我來處理錯誤",error)?end

xpcall(testXpcall,testErrorHandle)

面向對象

對象:屬性、方法。table,function。student?= {name?=?"張三",age?=?18,?gotoSchool?= function(name)print(name.."上學")?end}--[[student.gotoSchool?= function(name)print(name.."上學")?endfunction?student.gotoSchool(name)print(name.."上學")?end]]--print("學生姓名:"..student.name..",年齡是:"..student.age)?student.gotoSchool(student.name)

技巧冒號

1。類比:一個類,實例化多個對象。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92618.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92618.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92618.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Axure基于中繼器實現的組件庫(導航菜單、動態表格)

摘要 本文將為您詳細介紹基于 Axure 的中繼器組件庫中的 9 個獨特組件,這些組件不僅能夠極大地提升您的原型設計效率,還能為您的項目增添令人驚嘆的交互效果和視覺呈現。 引言 在當今快速發展的數字產品設計領域,原型設計工具的革新不斷推動著…

Kafka 生產者與消費者分區策略全解析:從原理到實踐

一、生產者分區策略1.1 分區好處(1)便于合理使用存儲資源,每個Partition在一個Broker上存儲,可以把海量的數據按照分區切割成一塊一塊數據存儲在多臺Broker上。合理控制分區的任務,可以實現負載均衡的效果。&#xff0…

高頻面試點:深入理解 TCP 三次握手與四次揮手

在網絡通信的世界里,TCP(Transmission Control Protocol,傳輸控制協議)是確保數據可靠傳輸的基石。其中,三次握手建立連接、四次揮手斷開連接的過程,更是 Java 秋招面試中的高頻考點。今天,我們就深入剖析這兩個關鍵過程,結合原理、代碼示例與面試真題,幫你吃透知識點…

k8s-nfs實現創建sc的兩種方式

法一:基于 官方 NFS CSI 插件 法二:基于 nfs-subdir-external-provisioner 法一 官方 NFS CSI 插件 大致步驟# 安裝 NFS sudo apt update sudo apt install -y nfs-kernel-server # 創建共享目錄 sudo mkdir -p /data/nfs sudo chmod 777 /data/nfs # 配…

n8n 入門指南:更適合跨境出海搞錢的AI智能體

如果你最近刷到 AI 圈的分享應該會發現——n8n 又火起來了。其實 n8n 早在 2020 年左右就被程序員玩過一波,當時很多人拿它做網站自動發郵件、消息轉發之類的“流程自動化”。但那時候 AI 還沒這么卷,大家也沒覺得多有用。n8n為什么最近又翻紅&#xff1…

【數據分享】各省農業土地流轉率(2010-2023)

數據介紹土地流轉是推動農業規模化、現代化發展的關鍵機制。為助力相關研究,現分享一份覆蓋全國30個省級行政區、時間跨度為2010-2023年的農業土地流轉率面板數據集。本數據直接提取自權威統計年報,具有較高的參考價值。一、數據概覽覆蓋范圍&#xff1a…

音視頻時間戳獲取與同步原理詳解

引言:為什么音視頻同步如此重要? 在音視頻技術領域,"同步"是決定用戶體驗的核心要素。想象一下觀看電影時畫面與聲音錯位0.5秒的場景:角色說話時嘴唇動作與聲音不匹配,爆炸場景的視覺沖擊先于音效到達——這…

Day38--動態規劃--322. 零錢兌換,279. 完全平方數,139. 單詞拆分,56. 攜帶礦石資源(卡碼網),背包問題總結

Day38–動態規劃–322. 零錢兌換,279. 完全平方數,139. 單詞拆分,56. 攜帶礦石資源(卡碼網),背包問題總結 今天的是幾道經典的“完全背包”題目。前兩道題目,要區分求的是“價值”,還…

應用層Http協議(1)

應用層Http協議(1) 在互聯網世界中,HTTP(HyperText Transfer Protocol,超文本傳輸協議)是一個至關重要的協議。它定義了客戶端(如瀏覽器)與服務器之間如何通信,以交換或傳…

elementui input無法輸入問題

背景。開發小程序。自定義表單在pc段設置好input輸入框屬性后。 在小程序端無法輸入原因:長度受限制,導致input組件的maxlength屬性認為長度是0導致無法輸入任何值。看解釋是應為遇到空字符串等情況會設置為0解決。因為未找到設置maxlength為0處&#xf…

算法_python_學習記錄_02

算法學習和視頻學習過程中,有許多前幾天還不知道的知識點,現在一點一點歸納整理出來,穩步前進,前進~ 20_貪心算法系列題 00_參考文檔 詳解貪心算法(Python實現貪心算法典型例題)_順序貪婪算法-CSDN博客P…

Meta AI水印計劃的致命缺陷——IEEE Spectrum深度文獻精讀

一、原文信息 標題: Metas AI Watermarking Plan Is Flimsy, at Best 中文譯名: Meta的AI水印計劃脆弱不堪 作者: David Evan Harris(加州大學伯克利分校)、Lawrence Norden(紐約大學法學院) 發表日期: 2024年3月5日 發表期刊: IEEE Spectrum 二、原文全文翻譯 Met…

gpt-oss 全量技術解讀

一、概述 gpt-oss 是 OpenAI 發布的開放權重(open-weight)模型系列,面向強推理、Agent 能力與多樣化應用場景。 提供兩種規格: gpt-oss-120b:面向生產與高推理需求,單卡 80GB GPU(如 NVIDIA …

實現EtherNet/IP網絡與Modbus TCP網絡之間數據互通

硬件連接與配置使用工業以太網網關(如ENE-350)作為橋接設備,通過以太網交換機實現硬件互聯。 網關需根據應用場景配置為EtherNet/IP從站或Modbus TCP主/從站模式。案例1:EtherNet IP主站PLC和Modbus TCP主站PLC的互聯網關配置&…

zookeeper因jute.maxbuffer啟動異常問題排查處理

#作者:程宏斌 文章目錄一、前言二、問題描述三、定位過程四、問題根因五、解決方案根本解決方案應急處理方案調大參數可能出現的問題六、總結為什么超出會報錯官方對于jute.maxbuffer的解釋注意事項官方建議一、前言 在分布式系統中,ZooKeeper作為關鍵的…

Java基礎十三: List

目錄 1.Java LinkedList 的高級應用與示例 1.1 LinkedList的基本使用 基本操作示例 1.2 LinkedList獨有的方法 特定方法示例 1.3 隊列模式(先進先出) 隊列模式示例 1.4 棧模式(先進后出) 棧模式示例 總結 2.Java Vecto…

[機器學習]03-基于核密度估計(KDE)的鳶尾花數據集分類

關鍵點:使用核密度估計(KDE) 估計類別條件概率密度(高斯核,帶寬0.2)采用最大后驗概率(MAP) 決策準則進行分類程序代碼:import random import matplotlib from sklearn.ne…

jmeter怎么實現多個請求真正的同時發送

1.首先在插件管理器Plugins Manager中搜索插件Parallel Controller&Sampler,勾選上對應的插件后,在右下角點擊Apply Changes and Restart JMeter,安裝插件2.插件安裝完畢后,然后在線程組上面右擊,點擊添加--邏輯控…

復雜環境下車牌識別準確率↑29%:陌訊動態特征融合算法實戰解析

原創聲明本文為原創技術解析,核心技術參數與架構設計引用自《陌訊技術白皮書》,轉載需注明來源。一、行業痛點:車牌識別的現實挑戰在智慧交通、停車場管理等場景中,車牌識別作為關鍵技術環節,長期面臨多重環境干擾。據…

Express中間件和路由及響應方法

1.中間件分類 應用程序級別中間件 通過 app.use() 或 app.METHOD()(如 app.get)綁定的中間件,作用于整個應用程序。例如 記錄請求日志、解析請求體等全局功能。例如: app.use((req, res, next) > {console.log(Request URL:…