PHPでシグナルを取り扱うときの注意点

PHPでシグナルハンドルしようと思い、コーディングしたが、思うように動作しない。

<?php
function signal_handler($signal)
{
    echo "signal = $signal\n";
    exit($signal);
}

pcntl_signal(SIGTERM, "signal_handler");
pcntl_signal(SIGHUP,  "signal_handler");
pcntl_signal(SIGUSR1, "signal_handler");
posix_kill(posix_getpid(), SIGTERM);

echo "finished\n";
?>

何故だ!?と思ったら、ticksの定義が必要という。

<?php

declare(ticks = 1);

function signal_handler($signal)
{
    echo "signal = $signal\n";
    exit($signal);
}

pcntl_signal(SIGTERM, "signal_handler");
pcntl_signal(SIGHUP,  "signal_handler");
pcntl_signal(SIGUSR1, "signal_handler");
posix_kill(posix_getpid(), SIGTERM);

echo "finished\n";
?>

勉強になりました・・・

This entry was posted in コンピュータ, プログラム. Bookmark the permalink.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">