pcntl_signalとは? わかりやすく解説

Weblio 辞書 > コンピュータ > PHP関数リファレンス > pcntl_signalの意味・解説 

pcntl_signal

(PHP 4 >= 4.0.7, PHP 5)
pcntl_signal — シグナルハンドラを設定する

説明

bool pcntl_signal ( int signo, callback handler [, bool restart_syscalls] )
pcntl_signal() 関数は、signo が指すシグナルに関するハンドラを設定します。

パラメータ

signo
シグナル番号。
handler
ユーザ定義関数の名前、あるいは次のふたつのグローバル定数 SIG_IGN または SIG_DFL のうちのいずれかとなります。
注意: オブジェクトのメソッドをハンドラとして指定した場合には、 そのハンドラを別のものに変えたりスクリプトが終了したりするまでは オブジェクトの参照カウントが増加しないことに注意しましょう。
restart_syscalls
再起動のシステムコールに対応するかどうかを設定します。デフォルトは TRUE です。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

変更履歴

バージョン説明
4.3.0 パラメータ restart_syscalls が追加されました。
4.3.0 オブジェクトのメソッドをコールバックとして使用できるようになりました。
4.3.0 PHP 4.3.0 以降、PCNTL はシグナルハンドルコールバックの仕組みとして ticks を使用しており、これは以前の仕組みよりずっと高速です。この変更は "user ticks" を使用するのと同じことです。上の例で示したように、 declare() を使用して プログラム中でコールバックの発生を許可する場所を指定し、シグナルハンドラが 正しく動作するようにする必要があります。

例 1607. pcntl_signal() の例
<?php
// PHP 4.3.0 以降では tick を使用しなければなりません
declare(ticks = 1);

// シグナルハンドラ関数
function sig_handler($signo)
{

     switch ($signo) {
         case SIGTERM:
             // シャットダウンの処理
             exit;
             break;
         case SIGHUP:
             // 再起動の処理
             break;
         case SIGUSR1:
             echo "SIGUSR1 を受け取りました...\n";
             break;
         default:
             // それ以外のシグナルの処理
     }

}

echo "シグナルハンドラを設定します...\n";

// シグナルハンドラを設定します
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP,  "sig_handler");
pcntl_signal(SIGUSR1, "sig_handler");

// あるいは PHP 4.3.0 以降ならオブジェクトも指定できます
// pcntl_signal(SIGUSR1, array($obj, "do_something");

echo"自分自身に SIGTERM シグナルを送信します...\n";

// SIGUSR1 をカレントのプロセス ID に送信します
posix_kill(posix_getpid(), SIGUSR1);

echo "終了\n"

?>


参考

pcntl_fork()
pcntl_waitpid()




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「pcntl_signal」の関連用語

pcntl_signalのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



pcntl_signalのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2024 by the PHP Documentation Group.

©2024 GRAS Group, Inc.RSS