2011-03-07 26 views
6

我正在玩mysql-proxy的腳本。我試圖完成的是無關緊要的。然而,我發現,似乎lua界面的元素沒有記錄。我擁有的大型「吸菸槍」是disconnect_client()掛鉤。我無法在the official documentation的任何位置找到它,但它在explanation of the admin interface的示例中使用。它也廣泛用於示例文檔。快速的grep顯示了其在下面的腳本中使用包含在5.5.8分佈:是否有一套完整的mysql-proxy lua腳本文檔?

有源queries.lua
有源transactions.lua
負載multi.lua
RO-pooling.lua
RW-splitting.lua
教程keepalive.lua

已經引起了我的眼睛我的另一個例子是屬性在proxy.global.backends表條目列表。該documentation列出了以下屬性:

dst.name 
dst.address 
dst.port 
connected_clients 
state 
type 

然而,有幾個示例腳本都引用了一個名爲池相當複雜的元素。就拿tutorial-keepalive.lua

local s = proxy.global.backends[i] 
local pool  = s.pool 
local cur_idle = pool.users[proxy.connection.client.username].cur_idle_connections 

起初我還以爲是被添加到其他地方的盧阿,但我已經看了,我無法找到任何代碼分配到proxy.global.backends [1]。池。

於是,兩個問題我想:

  1. 我是瘋了嗎?請隨時展示我是如何忽略這些顯而易見的,並且文檔非常清晰。
  2. 假設我是正確的,是否有任何地方可以找到完整的文檔?一個不錯的鏈接會很棒(雖然我不能谷歌一個),但甚至「從定義接口的mysql-proxy發行版中查看這個.c文件」。至少這會讓我有點捅。

感謝

回答

1

剛開代理/ Lua的自己。恐怕和Mysql的所有事情一樣,一旦你在自己的封面下沾上了它, LUA也是如此。 你需要LUA的其他插件來做你想做的事情,我想建議: http://peterodding.com/code/lua/apr/docs/#shared_memory 爲Apache Protable庫綁定...節省了我一大筆時間。 至於MySql的內部,可能需要查看C源代碼文件,可悲的是,因爲我們在這裏尚未開發的領域。

我發現的一件事是,Mysql中的LUA結構不是Lua表,而是Lua的「用戶數據」。這意味着它們是有效的共享內存,所以Lua無法更改它,因爲Mysql也使用它們。我將嘗試使用luaposix庫來查看是否可以接受它們,因爲如果可能的話,我想改變一些元素。

好運

[email protected]