幾つかの注意点

総閲覧回数:4,034,567回 / ブログ拍手:2,630
作品DB等各サービスの機能追加情報や、技術系・面白系記事を中心に提供。
記事の投稿は基本Twitterでも告知させて頂いています。
連絡は作品DBの論客の方なら私書、DB外ユーザの方ならメールTwitterで可能です。
アクセス記録[推移 / PV内訳(過去1日 / 過去1週間) / 外部アクセス元 (昨日 / 過去1週間) / ログイン論客足跡]
プロフィール私書(メール)
   /   /送済
評価(一覧   /)
投票   /共:   /
ファン登録
作品/情報/
DB構築()
ブログ
[書く]
攻略記事リンク集
My Play List
<=次の記事 またノートパソコン壊れた & 直近反応数追加 & 追加特殊機能
=>前の記事 削除権限の分散 & 定期更新時間の変更

1.
2005/08/16 Perl > mod_perl > 幾つかの注意点」
[この書込みのみ表示(記事URL紹介用) / 編集 / 削除 / トラバ送信 / 共有分類に追加(タグ付け)]

1. 文章目的
2. 使い分け
3. 注意点
4. Apacheの設定
5. 性能
6. Perlのダークサイド
7. 参考文献

1. 文章目的

少々情報が少なげなmod_perlに関するテクニックを公開します。
2. 使い分け

・CGIからmod_perl化するものは、Apache:::Registryでメモリーに解析済みのものを入れる場合のみmod_perlを使う。
中途半端は、あまり意味ない。
・mod_perlは、想定外のバグが混入しやすいので、それ程のパフォーマンスが必要ないのなら、一回実行で切れるCGIを、書き込みのところには使う。読み込みは基本的にmod_perlとして使い分ける。
3. 注意点

・読み込んでいるモジュールの更新では、mod_perlプログラムは通常再読み込みされない。apacheの再起動が必要。
・mod_perlだとプログラムの実行しているパスはうつろうものだから、絶対パスで書く。
$^O=~ m!^(?:cygwin|MSWin)!で、Windows系と区別させ、パスを変える
・mod_perlは、普通のプログラムは、Object Oriented Programmingをし、変数を綺麗にしておくのが良い。
user strict; use warningsをし、警告は出ないようにする。局所変数化をしておかないと、変数自体が、次のプログラム実行時に引き継がれて生きていくので、そういう漏れを発見する為に、綺麗なプログラミングをする。
4. Apacheの設定

どのファイルをmod_perlで実行するのかhttpd.confに記述する場合、ディレクトリを指定してそこのディレクトリ内ならmod_perlを使えるようにするという方法もありますが、うちのサイトの場合だと拡張子を見てそれをさせています。それだと、どこの場所でも使いたい時には使えるのと、今までaaa.cgiだったのをaaa.mplとするだけで、使えるので、移行もしやすいので。実際のところは、text/htmlを返すプログラムだろうとう想定して貰うために、.aspを使っています。.jspでも.phpでも何でも良いのですが、検索エンジンにとって想定外の拡張子だと、クロールされない可能性が出てくるので、それを避けています。
5. 性能

・mod_perlは日本で500位位のトラフィックがあるaccessup.orgのサーバーを一台でも稼動させる能力を持つ。
また1秒以内の処理が求められる速度クリティカルな環境でも基本的に使える。
6. Perlのダークサイド

死なないプログラムなら、変数を局所化しないことが、再度の実行(ファイルアクセス等)を避けさせることができる。
極端な速度の向上を求めるのなら、宝はここにあり。
但し、myなど局所化を避ける、思考を伴った局所化が必要。
何でも局所化という発想な人には、コペルニクス化の発想転換で、Perlのダークサイドに堕ちる(昇華する)必要があり。
速度の果てに辿り着く稀な境地です。
とはいえ明示的にやっているということを示すのと、とwarnを避ける為、
use vars qw(変数リスト);

use constant 変数名 => 不変の値;
という風に明示的に永続変数は宣言するのが良い。
7. 参考文献

O'REILLYから出ているPratical mod_perlの中身(分厚い)は、
http://modperlbook.org/html/index.html
で読める。個人的には、買っていながら、apache2 + mod_perl2ではなく、apache1.3 + mod_perl1が中心の内容に嫌気がさして、全く読んでいなかったりするが、もしかしたら、オンライン版は、apache2 + mode_perl2の情報も、拡充されているかもしれない。
まあ、あんまりApache APIを使って、スタンドアローンと互換性を消すような使い方に、メリットを私が感じていない為かもしれませんが(それだったらOOPさえマスターしていれば良い)。

コメントする


[他の記事も読む]
<=次の記事 またノートパソコン壊れた & 直近反応数追加 & 追加特殊機能
=>前の記事 削除権限の分散 & 定期更新時間の変更


大分類が「Perl」の記事
この論客の記事全て
↑上へ