[PHP-users 18833]pcntl_signal()が期待通りの動作をしない
Tomokazu Tanaka
tanaka-mag @ mithras.co.jp
2003年 11月 6日 (木) 23:48:15 JST
こちらのMLでは初めて投稿させていただきます、ミトラスの田中です。
現在、CLI(CGI)版のPHP(4.3.4RC3)にてpcntl_signal()を使用したデー
モンの作成にチャレンジしているのですが、どうも上手くいきません。
当然、configure のオプションに --enable-pcntl は付けており、pcntl_fork()の
動作は確認できています。
% kill -KILL pid
だとプロセスは強制終了しますので、シグナル自体は送られているようなのですが、
-KILL 以外のシグナルにはまったく反応しないようで困っています
ソースは以下の通りなので、-HUP と -TERM でプロセスが終了するはずなのですが、
無反応という状態です。
=====================================================================
#! /usr/local/bin/php -q
<?
set_time_limit(0);
ini_set( 'display_errors' , false );
while ( 0 < ob_get_level() ) {
ob_end_flush();
}
pcntl_signal( SIGTERM , "sig_handler" );
pcntl_signal( SIGHUP , "sig_handler" );
while ( true ) {
sleep(5);
}
function sig_handler( $signo ) {
exit;
}
?>
=====================================================================
どなたか同じような経験をされ、解決できた方はいらっしゃいますでしょうか?
また、現在はCGI版としてCLI版をインストールしているのですが、これは
configure 時にSAPIを指定しないと怒られてしまうため、apxs版よりはまし
だろうと、apxs版には --enable-pcntl を付けず、CGI版に --enable-pcntl
を付けて make したためなのです。
理想的にはCGI版は必要なく、apxs版とCLI版の2種類がインストールで
きれば良いのですが、よい方法はないでしょうか?
次善案として、apxs版に --enable-pcntl を付けて make し、apxs版をも
う一度 --enable-pcntl 無しで make するというのも考えてはいるのですが、ちょっ
と怖い気もしています。
良いお知恵があれば、ご指導ください。
よろしくお願いいたします。
----------------------------------------------------------------------------
株式会社 ミトラス / Mithras Co.,LTD.
ネットワーク開発部 田中 友和 / Tomokazu Tanaka <t-tanaka @ mithras.co.jp>
〒112-0013 東京都 文京区 音羽 2-11-19 オトワKSビル 6F
◇ TEL: 03-5977-3255 ◇ FAX: 03-5977-3256 ◇ http://www.mithras.co.jp/ ◇
********** メールアドレスが変更になりました **********
<tanaka @ mithras.co.jp> → <t-tanaka @ mithras.co.jp>
******************************************************
PHP-users メーリングリストの案内