openresty原始碼剖析——lua程式碼的載入
阿新 • • 發佈:2019-02-13
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
204
ngx_int_t
205
ngx_http_lua_cache_loadfile(ngx_log_t * log ,
lua_State *L,
206 const u_char
*script, const u_char
*cache_key)
207
{
208
...
232
rc = ngx_http_lua_cache_load_code( log ,
L, ( char *)
cache_key);
233 if (rc
== NGX_OK) { //程式碼在全域性變數table中存在,則返回
234
...
237 return NGX_OK;
238
}
239
...
250
rc = ngx_http_lua_clfactory_loadfile(L, ( char *)
script); //
251
...
279
rc = ngx_http_lua_cache_store_code(L, ( char *)
cache_key); 280
...
285 return NGX_OK;
286
287
error:
288
...
294
}
|
程式碼載入分成3步完成
ngx_http_lua_cache_load_code 從lua_state的全域性變數table中載入程式碼,如果全域性快取中有就返回
ngx_http_lua_clfactory_loadfile 用自定義的函式從檔案中載入程式碼
ngx_http_lua_cache_store_code 把程式碼存放到lua_state的全域性變數table中