[perl] mod_perl起動時のstartup.plでの便利な手法
mod_perl の起動時に startup.pl というスクリプトを読み込むことで、
初回ロード時に必要なモジュールをhttpdに取り込み、あらかじめコンパイルできるという機能があります。
mod_perlを利用している httpd.conf (Apacheの設定ファイル)に
以下のように記述します。
PerlRequire /path/to/startup.pl
「startup.pl」のファイル自体は例えばこのように記述できます。
perlを実行しますので、perlでかけることはほぼ何でも書けます。
use strict;
BEGIN {
use Apache ();
}
use Apache::DBI ();
use DBI ();
また、自家製のperlモジュールをstartup.plで取り込む場合、
1つ1つ書いていくのも中々面倒ですし、メンテナンス性の面からも避けたいところです。
こういった、動的にモジュールが増えていく中でそれらをstartup.plに取り込めるようなスクリプトを
マツモブログさんが開発されています。
startup.plに書いておいた方が良い事。 (マツモブログ)
サイト用のモジュールのパッケージ名をベッタ~とstartup.plに書いてたんですが、
モジュールを追加したり、削除したりいくうちにstartup.plのメンテナンスが追いつ
かなくなってきました。こりゃいかんという事でもう一発で読み込んでしまおうという
事で次のように書いてます。 (マツモブログより引用)
File::Findを使ってディレクトリ内を調べ、*.pmファイルを requireする構造です。
この手法だと、いくらモジュールが増えても矛盾することなくstartup時にモジュールをロードできます。
激しく便利ですね。
是非お試し下さい。
関連リンク
- mod_perlで親プロセスとのCopy on Writeな共有メモリを増やす方法。
startup.plでのモジュールを共用している状況を調べることができる「INCdiff.pm」がとても便利です。 - モジュールをuseした際のメモリ使用量(増加量)を調べてみる
モジュールの記述方法によって、初回ロード時の取り込み方が変わるという比較です。こちらもとても便利です。








