Rest Term

mod_dbdでデータベース操作

Pocket

Apacheモジュールの mod_dbd を試してみます。

mod_dbd はデータベースへのコネクション管理機能を提供するモジュール。
内部で apr_dbd を用いてコネクションプール機能を提供するラッパーモジュールとなっていて、
データベースへの各問い合わせは apr_dbd のAPIを利用します。
Apache Portable Runtime: DBD routines

今回は以下のようなテーブル(dbd_test.user)を対象に dbdtest_module を作ります。
(環境: Apache/2.2.17, APR 1.3.12, APR-Util 1.3.9)

* user *
| id | name | age |
| 1 | foo | 10 |
| 2 | bar | 20 |

* テンプレート作成


* mod_dbdtest.c を編集

* mod_dbdtest.conf を作成

* インストール

* 出力結果 (/dbdtest にアクセス)

モジュール作成の手順としては、
1. ap_dbd_acquire 関数を用いてコネクションハンドラを取得
 (ap_dbd_t 構造体の中の apr_dbd_t がコネクションハンドラ)
2. apr_dbd の各APIを用いてデータベースを操作
 型名が ap_dbd だったり、apr_dbd だったり紛らわしいので注意。。
 r が付いていないのが mod_dbd が提供するAPIです。

* 問題点(わからない所)
通常のSQL文を発行する場合は問題ありませんでしたが、ストアドプロシージャをCALLすると、
"PROCEDURE proc_name can't return a result set inn the given context."
というエラー(1312)が発生しました。。
確か、libmysqlclientを使ってプロシージャコールをするときも、
オプションを付けてmysql_real_connect()しないとダメだった気がします。
mod_dbdの場合はどうすればいいんだろう。。要調査。

あと、Apacheモジュールについてはwikiの方にもメモを残すことにしました。
Apache - Tech Note

* 参考
漢(オトコ)のコンピュータ道: mod_dbd入門編

あわせて読む:

 

Tags: ,

Comments

No comments so far.

  • Leave a Reply
     
    Your gravatar
    Your Name