mod_perl2.0ではalarmが使えないのかも

こんにちわ。
腰痛菌をうつされたお爺さんです。
これに感染すると腰痛が発生し、終には椎間板ヘルニアになってしまうという恐ろしいものです。
毎日腰痛体操をして、これ以上悪化を防がねばなりません。がんばります。
それはさておき、mod_perl2.0でalarmが使えないかも、という連絡を受けたので調べてみました。

そもそもPerlのalarmですが、普段は処理に時間がかかりすぎた場合に中断するために、タイマ代わりとして使っています。
なので、たいていのCGIでは使われる結構重要なシカケだと思っています。

で、mod_perl2.0ではどうか。
以下に書かれています。

http://perl.apache.org/docs/2.0/user/coding/coding.html#toc_Using_Signal_Handlers

超適当に解説すると、mpm環境では使えないようです。
その理由ですが、さらっと「普通シグナルはmpm環境では安全じゃないから」と書かれています。
ヘタにやると、core dumpするみたいですね。はははっ。
この辺の、Perlのシグナルの深層ってやつはもう少し調べないとなんとも言えません。

それで、どうせよ、と言っているか。

 1.POSIX SIGALRMを使う。
 2.unsafeを使う
   →ちゃんと検証しないと、core dumpしそうです。
 3.APRを使う
   →pipeやsocketのブロックを取りたいわけじゃないんですよ。
    処理全体のタイマを使いたいんですよ。

参考
 http://search.cpan.org/dist/perl/ext/POSIX/POSIX.pod#POSIX::SigAction
 http://search.cpan.org/~rgarcia/perl-5.9.4/pod/perlipc.pod#Deferred_Signals_(Safe_Signals)

#英語の文献は読むのに時間がかかって嫌いです。。。


たぶん、POSIXを使うのが一番スマートなんでしょうが、なんかmod_perl2.0へ移行するのを躊躇したくなりましたよ、ハイ。



ひさびさにカロリー計算。
朝 200kcal カロリーメイト

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック