既存のperl製CGIをmod_perl環境下で動作させるための注意点
[perlとは?]
説明
スクリプト言語
メリット
テキスト形式で記述・実行するので人間の目で見えるからメンテナンスが容易
文字列処理が得意
デメリット
実行のたびにコンパイルする必要があるので、他の実行ファイル形式プログラムと比較して低速。
[mod_perlとは?]
説明
Apache上でPerlの機能を最大化するためのアドイン機能。
メリット
上記のデメリットを解消する(最初の1回目だけコンパイルし、メモリに常駐させる)ことで、オーバーヘッドを無くし高速化する
デメリット
メモリ消費が大きい
メモリに常駐させるので、メモリリークを起こすようなプログラムを設定してはいけない
注意点
グローバル変数に注意が必要
問題点
最初の起動後にメモリへキャッシュされるので、グローバル変数を無為に利用すると危険
解決策
そもそもグローバル変数を利用しない
正しく初期化をおこなう
モジュールやライブラリファイルの更新
問題点
モジュールやライブラリファイルを更新しても反映されない
解決策
Apacheの再起動が必要
通常のexit()は使用できない
解決策
以下の判定により、exit関数を他の関数でオーバーライトさせる必要がある。
use subs qw(exit); *exit = $ENV{MOD_PERL} ? \&Apache::exit : sub { CORE::exit };
備考
今回これだけ書きましたが、メインはこのexitでした。
参考URI
http://www.din.or.jp/~bigstone/cgilab/cgitips/mod_perl.html