6

mysql-proxyのスクリプトで遊んでいます。私が達成しようとしていることは無関係です。しかし、私が見つけたのは、文書化されていないluaインターフェースの要素があるように見えるということです。私が持っている大きな「喫煙銃」はdisconnect_client()フックです。管理インターフェースの説明の例で使用されていますが、公式ドキュメントのどこにも文書化されていません。サンプルドキュメントでも広く使用されています。クイックgrepは、5.5.8ディストリビューションに含まれている次のスクリプトでの使用法を示しています。

active-queries.lua
active-transactions.lua
load-multi.lua
ro-pooling.lua
rw-splitting.luatutorial
-keepalive.lua

私の目を引いた他の例は、proxy.global.backendsテーブル内のエントリの属性のリストです。ドキュメントには、次の属性がリストされています。

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

ただし、サンプルスクリプトのいくつかは、poolと呼ばれるかなり複雑な要素を参照しています。たとえば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

最初は、luaのどこかに追加されていると思っていましたが、調べてみたところ、proxy.global.backends[i].poolに割り当てられているコードが見つかりませんでした。

だから、私が思う2つの質問:

  1. 私はナッツですか?私がどのように明白なものを見落としたか、そしてドキュメントが本当に非常に明確であるかを自由に示してください。
  2. 私が正しいと仮定すると、完全なドキュメントを見つける場所はありますか?素敵なリンクは素晴らしいでしょう(私はそれをグーグルで検索することはできませんでしたが)が、「インターフェースを定義するmysql-proxyディストリビューションからのこの.cファイルを見てください」。少なくともそれは私に何かを突くようなものを与えるでしょう。

ありがとう

4

1 に答える 1

1

Proxy/Lua を自分で開いたところです。残念ながら、Mysql のすべてと同様に、カバーの下に潜り込むと、あなたは独り立ちします。同じことがLUAにも当てはまります。やりたいことを行うには、LUAに他のアドオンが必要になります。私が提案したいのは、http: //peterodding.com/code/lua/apr/docs/#shared_memory for the Apache Protable library binding ...私を救ったことです時間のかけら。MySql の内部については、C ソース ファイルを参照する必要があります。悲しいことに、ここは未知の領域にあるためです。

私が発見したことの 1 つは、Mysql の LUA 構造が Lua テーブルではなく、Lua の「ユーザー データ」であることです。これは、それらが実質的に共有メモリであることを意味し、Mysql もそれらを使用するため、Lua によって変更することはできません。可能であれば、変更したい要素があるため、luaposix ライブラリを試して、それらにアクセスできるかどうかを確認します。

幸運を

Peter.colclough@toolstation.com

于 2012-06-22T14:50:40.593 に答える