mod_perlの挙動について教えてください。


次のようなソースを書いて、実際に何度かアクセスしてみました。

#!/usr/bin/perl

print "Content-type: text/plain\n\n";
print $i++;

ローカル環境ということあり、アクセスしているのは確実にわたしだけです。ですのでアクセスするたびに1、2、3、4、5、6、7...と増えていくことを期待していました。

が、ときどきリセットされたり(0に戻る)、複数のカウントがされたりしました。Perlのファイル自体は編集などはまったく行っていないのですが、これは正しい動作なのでしょうか?


環境は以下になります。
Apache/1.3.33 (Unix) (Vine/Linux)
mod_perl/1.29

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/06/23 00:24:40
  • 終了:2006/06/25 01:15:15

ベストアンサー

id:pmakino No.1

まきのっぴ回答回数355ベストアンサー獲得回数282006/06/23 00:52:02

ポイント69pt

変数の値が保持されるのは同一の Apache プロセスの中での話ですから、プールされた複数のプロセスの中からランダムに割り当てられる環境下としては正しい挙動だと思います。

MaxClientsMinSpareServersMaxSpareServers の設定値を増減してみるとまた挙動が異なってくるはずです。

id:katsube

合点が行きました。

・キャッシュされた一つが使いまわされるのではなく、プロセスごとにプールされる。

・そのプロセス自体がランダムに切り替わるため上記のような現象が起こる。

というわけですね。

設定値も後ほど試してみようと思います。

ありがとうございました!

2006/06/23 10:37:20

その他の回答(1件)

id:pmakino No.1

まきのっぴ回答回数355ベストアンサー獲得回数282006/06/23 00:52:02ここでベストアンサー

ポイント69pt

変数の値が保持されるのは同一の Apache プロセスの中での話ですから、プールされた複数のプロセスの中からランダムに割り当てられる環境下としては正しい挙動だと思います。

MaxClientsMinSpareServersMaxSpareServers の設定値を増減してみるとまた挙動が異なってくるはずです。

id:katsube

合点が行きました。

・キャッシュされた一つが使いまわされるのではなく、プロセスごとにプールされる。

・そのプロセス自体がランダムに切り替わるため上記のような現象が起こる。

というわけですね。

設定値も後ほど試してみようと思います。

ありがとうございました!

2006/06/23 10:37:20
id:yo-kun No.2

yo-kun回答回数220ベストアンサー獲得回数302006/06/23 01:16:37

ポイント1pt

HTTPサーバの設定によりますが、まず期待通りの動作はしないでしょう。

期待通りの動作をさせるには変数$iの値をファイルなどに保存しておく必要があります。


URLはダミーです。

http://q.hatena.ne.jp/1150989876

id:katsube

この質問の主題は解決方法の模索ではなく、“なぜ”期待通りの動作をしないかにあります。

通常のCGIではなく、mod_perl環境下では前回の変数の値が保持されるため初期化が必要とされていますが、であれば“なぜ”上記のような現象が起こるのか、その理由についての質問となります。

2006/06/23 10:33:16

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません