関数・クラス解説

pcntl_signal

version:PHP 4 >= 4.1.0, PHP 5, PHP 7 (公式)

シグナルハンドラを設定する

公式リファレンス

書式

pcntl_signal ( int $signo , callable|int $handler [, bool $restart_syscalls = TRUE ] ) : bool

handler ( int $signo ) : void

説明

pcntl_signal() 関数は、signo が指すシグナルに関するハンドラを新たに設定するか、既存のハンドラを置き換えます。

パラメータ

signo
シグナル番号。
handler
シグナルハンドラ。callable を渡すと、それを実行してシグナルを処理します。 あるいは、グローバル定数 SIG_IGN または SIG_DFL を渡すこともできます。それぞれ、シグナルを無視することとデフォルトのシグナルハンドラを復活させることを表します。 callable を渡す場合は、次のシグネチャを実装したものでなければいけません。
signo
処理するシグナル。
siginfo
OS が siginfo_t 構造体をサポートしている場合、 これはシグナルに依存するシグナル情報の配列になります。
注意: オブジェクトのメソッドをハンドラとして指定した場合には、 そのハンドラを別のものに変えたりスクリプトが終了したりするまでは オブジェクトの参照カウントが増加しないことに注意しましょう。
restart_syscalls
再起動のシステムコールに対応するかどうかを設定します。

返値

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

注意

pcntl_signal() は、既存のシグナルハンドラがある場合にはそれを上書きします。

更新履歴

バージョン 説明
7.1.0 PHP 7.1.0以降、ハンドラコールバックは特定のシグナルの signinfo を含む 2 番目の引数を与えられます。 このデータは、OS が signinfo_t 構造体を持つ場合のみ提供されます。 OS が siginfo_t を実装していない場合は NULL が提供されます。

サンプル

例1 pcntl_signal() の例

// 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"); // あるいは、オブジェクトも指定できます // pcntl_signal(SIGUSR1, array($obj, "do_something")); echo "自分自身に SIGUSR1 シグナルを送信します...\n"; // SIGUSR1 をカレントのプロセス ID に送信します // posix_* 関数を使うには posix 拡張モジュールが必要です posix_kill(posix_getpid(), SIGUSR1); echo "終了\n";

参考

  • pcntl_fork() - 現在実行中のプロセスをフォークする
  • pcntl_waitpid() - 待つかフォークした子プロセスのステータスを返す
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール