PerlさんPerlくん
[perl][mod_perl]mod_perl2のカレントディレクトリ
最終更新:
atwikimyj
-
view
mod_perl2では実行しているスクリプトのあるディレクトリを
カレントディレクトリとして認識してくれないので面倒!
という記事によくあたる。へえ、それ面倒だな、、と思っていたが、
いろいろと調べるとそうとは限らないようだ。
カレントディレクトリがどうなるかは、動作モデルによるらしい。
カレントディレクトリとして認識してくれないので面倒!
という記事によくあたる。へえ、それ面倒だな、、と思っていたが、
いろいろと調べるとそうとは限らないようだ。
カレントディレクトリがどうなるかは、動作モデルによるらしい。
えーっと、Apache2では動作モデルがいっぱい選択できる。その中の
prefork動作とWorker動作について説明すると、、
prefork動作とWorker動作について説明すると、、
prefork動作ではクライアントからのリクエストがある度
に子プロセスを作成する。
に子プロセスを作成する。
Worker動作では複数のプロセスとスレッドによりリクエストを処理します。
複数のスレッドは同じメモリを共有し、連携して処理が行われます。
複数のスレッドは同じメモリを共有し、連携して処理が行われます。
スレッドってなんじゃい?linuxでのマルチスレッド、マルチプロセスの話は
hatenaの伊藤さんが詳しく説明されています。
hatenaの伊藤さんが詳しく説明されています。
Hatena::Diary::naoya「マルチスレッドのコンテキスト切り替えに伴うコスト」
http://d.hatena.ne.jp/naoya/20071010/1192040413
(社内勉強用の資料のようです。いいなあ。はてな入ってperlやりてえなあ
でもこの資料まともに読めない自分のような人間は必要ないだろうなあ)
http://d.hatena.ne.jp/naoya/20071010/1192040413
(社内勉強用の資料のようです。いいなあ。はてな入ってperlやりてえなあ
でもこの資料まともに読めない自分のような人間は必要ないだろうなあ)
preforkは従来のmod_perlと同じやり方となり、安定性がある。
worker動作をさせたほうが、効率的で、処理が速い、らしい。
worker動作をさせたほうが、効率的で、処理が速い、らしい。
よほどの理由がない限り、worker動作を使いこなせるはずもない。
また、preforkはスクリプトのあるディレクトリをカレントディレクトリ
として認識してくれるので、やはりこちらか。ということで、
下記のサイトを参考にPrefork専用のハンドラーを利用するということにする。
また、preforkはスクリプトのあるディレクトリをカレントディレクトリ
として認識してくれるので、やはりこちらか。ということで、
下記のサイトを参考にPrefork専用のハンドラーを利用するということにする。
adiary開発日誌「2006/04/15(土) mod_perl で chdir」
http://adiary.blog.abk.nu/07
http://adiary.blog.abk.nu/07
TransFreeBSDの日記 「[perl]ModPerl::{PerlRun,Registry,RegistryPrefork}でのカレントディレクトリ、BEGINブロック、@INCの扱いメモ」
http://freebsd.g.hatena.ne.jp/TransFreeBSD/20061124/p1
http://freebsd.g.hatena.ne.jp/TransFreeBSD/20061124/p1
日誌「Apache MPM」
http://tkusano.asablo.jp/blog/2006/11/10/745619
http://tkusano.asablo.jp/blog/2006/11/10/745619