Linuxなどのメモ書き

mod_perlハンドラを書く


Rev.1を表示中。最新版はこちら

このテキストは

mod_perl2.0ドキュメントの"Writing mod_perl Handlers and Scripts"(http://perl.apache.org/docs/2.0/user/coding/coding.html)の和訳です。

現在編集中

目次

  • 説明
  • 前提
  • Where the Methods Live
  • Techniques
    • メソッドハンドラ
    • クリーンアップ

# Goodies Toolkit

    * Environment Variables
    * Threaded MPM or not?
    * Writing MPM-specific Code

# Code Developing Nuances

    * Auto-Reloading Modified Modules with Apache2::Reload

# Integration with Apache Issues

    * HTTP Response Headers
          o Generating HTTP Response Headers
          o Forcing HTTP Response Headers Out
    * Sending HTTP Response Body
    * Using Signal Handlers

# Perl Specifics in the mod_perl Environment

    * BEGIN Blocks
    * CHECK and INIT Blocks
    * END Blocks
    * Request-localized Globals
    * exit

# ModPerl::Registry Handlers Family

    * A Look Behind the Scenes
    * Getting the $r Object

# Threads Coding Issues Under mod_perl

    * Thread-environment Issues
    * Deploying Threads
    * Shared Variables

# Maintainers
# Authors

説明

この章ではmod_perlのコーディングの詳細、通常のPerlコーディングとの違いを扱います。その他のほとんどのPerlコーディングに関する情報はperlのmanページや書籍で取り扱われています。

前提

原文なし

Where the Methods Live

mod_perl 2.0では多くのモジュールに跨ってメソッドが存在します。これらのメソッドを使うためにメソッドを含むモジュールは最初にロードしておかないといけません。そうでないと、mod_perlは「メソッドを見つけられない」とエラーにします。どのモジュールが必要かを探すにはModPerl::MethodLookup モジュールが使えます。

Techniques

メソッドハンドラ

関数ハンドラに加えてメソッドハンドラを使うことができます。メソッドハンドラは継承のメリットを生かしたコードを書きたい場合に便利です。mod_perl2のメソッドとしてハンドラを作る場合、method属性を使ってください。

属性の詳細についてはPerlのmanページを参照してください(perldoc attributes)。

例:

  package Bird::Eagle;
  @ISA = qw(Bird);

  sub handler : method {
      my ($class_or_object, $r) = @_;
      ...;
  }

  sub new { bless {}, __PACKAGE__ }

そして、これを以下のようにして登録します。

  PerlResponseHandler Bird::Eagle

mod_perlはハンドラがmethod属性を持っている場合は、2つの引数をハンドラに渡します。
オブジェクトもしくはクラス名(どのように呼び出されたかに依存します)とRequestオブジェクトです。

クリーンアップ





最終更新 2007/05/25 17:29:38 - kztomita
(2007/05/25 17:29:38 作成)


リンク

その他のWiki
Linuxメモ
Xnuメモ

会社
(有)ビットハイブ
受託開発やってます。

よくやる仕事

・Webシステム開発(LAMP環境)
・Linuxサーバー設定関連
サーバー移転作業代行

開発事例にデジタルカタログ/マンガビューワーを追加しました。

draggable.jsのスマホ対応版デモページを追加しました。説明はこちら

検索

Adsense
最近のコメント